Recently我问我怎么可能会引发可变数量get()
请求jQuery和我收到的这个代码作为一个真正有效的工作方案:多个完成()在一个jQuery中推迟 - 它是如何工作的?
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();
我正在寻找的是如何解释确切地说,这与每个promise.then()
附带的多个done()
一起工作,然后最后的done()
附加到承诺本身。这是否是一个承诺(从我的理解是一种特殊类型的延期本身)可以完成,那么延期本身也可以完成?如果它不在一个循环中,那么这个语法看起来会是什么样的,例如,连续三个ajax请求?只是试图让我的头在附近。谢谢!
谢谢你的解释。我有点困惑:__“请注意,在你的代码中,你替换了每次循环迭代中promise变量的延迟”__'promise = promise.then'似乎不像是替换,而是串联。这是不正确的? – 1252748 2013-02-21 21:59:23
不正确。我相信你编码了很多PHP?在JavaScript中,点不是连接运算符,它就像PHP中的' - >';-) – 2013-02-21 22:01:54
哈哈,是的。好的。你能否解释最后一句说“*)实际上是承诺”。 – 1252748 2013-02-22 00:22:19