Опитвам се да добавя друго асинхронно извикване към договора на съществуващ Deferred, преди състоянието му да е настроено на успех. Вместо да опитате да обясните това на английски, вижте следния псевдокод:
$.when(
$.ajax({
url: someUrl,
data: data,
async: true,
success: function (data, textStatus, jqXhr) {
console.log('Call 1 done.')
jqXhr.pipe(
$.ajax({
url: someUrl,
data: data,
async: true,
success: function (data, textStatus, jqXhr) {
console.log('Call 2 done.');
},
})
);
},
}),
$.ajax({
url: someUrl,
data: data,
async: true,
success: function (data, textStatus, jqXhr) {
console.log('Call 3 done.');
},
})
).then(function(){ console.log('All done!'); });
По принцип Повикване 2 зависи от резултатите от Повикване 1. Искам Повикване 1 и Повикване 3 да се изпълняват паралелно. След като всичките 3 обаждания са завършени, искам да се изпълни кодът All Done. Моето разбиране е, че Deferred.pipe()
трябва да свърже друго асинхронно повикване към даденото отложено, но на практика винаги получавам Повикване 2 завършващо след Всичко готово.
Някой знае ли как да накарам jQuery's Deferred да прави това, което искам? Надяваме се, че решението не включва допълнително разкъсване на кода на части.
Благодаря за всяка помощ.
АКТУАЛИЗАЦИЯ: Моля, вижте моя последващ въпрос .