初めて使用$.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の配列を返すときに何かがうまくいかないということです
更新:
lanzz が私の不自然な例は既に Deferred を返すと述べた後、コードを更新しました。doSomeWork