ich mehr asynchronen AJAX-Anfragen unter Verwendung von latenter/Versprechen Implementierung von jquery Warteschlange will:Warten auf Abschluss nach mehreren Versprechen parallel mit jQuery
function doSomething() {
console.log('doSomething')};
function makeMultiAjaxRequests1() {
console.log('makeMultiAjaxRequests1')};
function makeMultiAjaxRequests2() {
console.log('makeMultiAjaxRequests2')};
var step1 = function() {
var promise = new $.Deferred().promise();
makeMultiAjaxRequests1();
return promise; }
var step2 = function() {
var promise = new $.Deferred().promise();
makeMultiAjaxRequests2();
return promise; }
step1()
.then(step2())
.done(doSomething());
$.when(step1(),
step2())
.done(function() {
doSomething();
});
Hier sind die fiddle link. Also meine Frage ist:
In dem Muster, wo Schritt1 und Schritt2 parallel ausgeführt werden, erreicht der Code nicht die letzte Handler-Funktion. Warum?
Wo aufgelöst Sie tatsächlich das Versprechen? Wenn Sie den Handler nicht auslösen, wird der Callback nicht aufgerufen ... – Bergi
Die Deferreds in 'step1()' und 'step2()' werden nie aufgelöst. –
Ja das stimmt, aber was ist der Fall im vorherigen sequenziellen Beispiel? Das Versprechen ist nicht gelöst und der Code ist immer noch vollendet. – crishushu