2013-04-03 5 views
2

De deferred.fail()page:Que signifie «rejeté» pour les objets Deffered autres que jqXHR?

Description de: Ajouter les gestionnaires à appeler lorsque l'objet différé est rejeté .

et l'exmple:

$.get("test.php") 
.done(function(){ alert("$.get succeeded"); }) 
.fail(function(){ alert("$.get failed!"); }); 

Comme nous le savons, nous pouvons créer var someObject = $.Deferred();

Mes questions:

  • Comment pouvons-nous 'reject' un différé si ce n'est pas un jqXHR?

  • Comment implémenter deferred.fail() pour des objets différés autres que jqXHR?

Merci.

Oui, je sais que mon anglais est mauvais.

+0

Anglais rangea :) –

Répondre

1

Un objet différé est rejeté lorsque .reject() ou .rejectWith() y est appelé.

Voici un exemple:

var deferred = $.Deferred(); 
deferred 
    .done(function() { console.log('done') }) 
    .fail(function() { console.log('failed') }); 

deferred.resolve(); // <-- will write 'done' to console 
deferred.reject(); // <-- will write 'failed' to console 

Vous pouvez utiliser deferreds pour faire des fonctions asynchrones se comportent comme $.get() fait. Par exemple setTimeout:

function MyTimeout() { 
    var deferred = $.Deferred(); 

    setTimeout(function() { 
    // as a demo, this will reject the deferred half the time 
    if (Math.random() < 0.5) 
     deferred.reject(); 
    else 
     deferred.resolve(); 
    }, 2000); 
    return deferred.promise(); 
} 

MyTimeout() 
    .done(function() { console.log('done') }) 
    .fail(function() { console.log('failed') }); 

La dernière déclaration peut également être écrit comme:

MyTimeout().then(
    function() { console.log('done') }, 
    function() { console.log('failed') } 
);