Это первый раз, когда я использую $.when
, и у меня возникают трудности с синтаксисом.
У меня есть код, похожий на упрощенный пример ниже. Он работает (если я не вызвал ошибку, когда я ее упростил). Моя проблема заключается в том, что я не знаю дома многих элементов, которые будут содержать массив customerIds
.
var customerIds = new [1, 2, 3];
$.when(
getCustomerData(customerIds[0]),
getCustomerData(customerIds[1]),
getCustomerData(customerIds[2])
).then(function() {
alert('success');
}).fail(function() {
alert('error');
});
function getCustomerData(int id) {
return new $.Deferred(function(defer) {
doSomeWork(id, defer);
}).promise();
}
Я хотел бы написать $.when
заявление следующим образом, но имеющих трудности с получением права синтаксиса.
$.when(
getCustomerDataCalls(customerIds),
).then(function() {
alert('success');
}).fail(function() {
alert('error');
});
Где getCustomerDataCalls
реализуется как:
function getCustomerDataCalls(customerIds) {
var dfds = [];
for (var id in customerIds) {
dfds.push(new $.Deferred(function(defer) {
doSomeWork(id, defer);
}).promise());
}
return dfds;
}
К сожалению, что-то не так с моей реализации, и я не могу работать, где я неправильно. Мое предположение, что что-то происходит не так, когда возвращающая массив Deferred
s
Update:
Я обновил код после lanzz упомянул, что мой надуманный пример уже возвращает Отложенный, я обновил свой пример, чтобы включить doSomeWork
Вам не нужно создавать новый экземпляр 'Deferred' для каждого' $ .get() 'вызов -' $ .get() 'уже возвращает обещание, вы можете использовать – lanzz
' Var DFDS = новый [ ]; 'опечатка? – fcalderan
@ Ф. Калдеран, действительно, спасибо, что исправил меня. –