这是我第一次使用$.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