這是我第一次使用$.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
小號
更新:
我更新的代碼之後lanzz提到,我人爲的例子已經返回遞延,我更新了我的例子包括doSomeWork
你並不需要實例化一個新的'Deferred'每個'$獲得()'調用 - '$獲得()'已經返回,你可以使用 – lanzz
'變種DFDS承諾=新[ ];'是一個錯字? – fcalderan
@ F.Calderan錯別字,謝謝你糾正我。 –