最近我问我如何触发可变数量的 jqueryget()
请求,我收到了这个代码作为一个非常有效的工作解决方案:
var d = new $.Deferred();
var promise = d.promise();
var results = [];
for (var i = 0; i < 5; i++) {
(function(i) {
promise = promise.then(function() {
return $.ajax('/echo/json/', {
data: {
json: JSON.stringify({foo: i})
}
}).done(function(data) {
results[i] = data;
});
});
}(i));
}
promise.done(function() {
console.log(results);
});
d.resolve();
我正在寻找一个解释,说明这与done()
附加到 each 的多个 spromise.then()
以及最后done()
附加到 promise 本身的情况到底是如何工作的。是不是一个承诺(据我所知是一种特殊类型的 deferred 本身)可以完成,那么 deferred 本身也可以完成?如果它不在循环中,那么对于连续三个 ajax 请求,这种语法会是什么样子?只是想绕开它。谢谢!