Si vous avez une fonction qui a à la fois les callbacks .then
et .always
, laquelle sera exécutée en premier?Que sont les rappels .always() ou .then() dans jQuery?
1
A
Répondre
5
provenir de la documentation deferred.resolve()
:
Lorsque le différé est résolu, tout doneCallbacks ajouté par deferred.then() ou deferred.done() sont appelés. Les rappels sont exécutés dans l'ordre dans lequel ils ont été ajoutés.
Exemple ci-dessous:
var $logger = $("#logEntry");
function addLog(content){
$logger.append($("<li/>").html(content));
}
var newPromise = $.Deferred();
$.when(newPromise).done(function() {
addLog("1st $when().done!");
});
newPromise.then(function() {
addLog("1st then!");
}).always(function() {
addLog("1st always!");
}).done(function() {
addLog("1st done!");
}).done(function() {
addLog("2nd done!");
}).always(function() {
addLog("2nd always!");
}).then(function() {
addLog("2nd then!");
});
$.when(newPromise).done(function() {
addLog("2nd $when().done!");
});
addLog("Resolving promise!");
newPromise.resolve();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="logEntry"></ul>
+1
Dans votre exemple 'always' est attaché à' then', ce qui est un peu différent de ce que OP a demandé. – zerkms
Pourquoi vous essayez tout simplement pas et voir, je devine alors '()' – adeneo
Et je viens de faire, a pris une minutes , et j'avais raison -> ** http: //jsfiddle.net/adeneo/ou1sy6uw/** – adeneo
Cependant, en les échangeant, ils reviennent différemment -> ** http: //jsfiddle.net/adeneo/ou1sy6uw/1/ **, donc quel que soit l'ordre dans lequel ils sont ajoutés – adeneo