我正在尝试将一组 jQuery Deferred 对象链接在一起,目的是在一切都解决后调用最终函数。
但是,我无法让 $.when.apply($, deferreds) 工作,但我无法弄清楚为什么它不起作用。
function callBackend(count) {
var deferred = $.Deferred();
setTimeout(function() {
$("div").append("<p>" + count + "</p>");
deferred.resolve();
}, 50);
return deferred.promise();
}
$(function() {
$("a").click(function() {
var promises = [];
for (i = 1; i <= 10; i++) {
var deferred = $.Deferred();
callBackend(i).then(function() {
deferred.resolve();
});
promises.push(deferred.promise());
}
$.when.apply($, promises).then(function() {
$("div").append("<p>All done!</p>");
});
});
});
我创建了一个小提琴来说明这个问题。有人有想法吗?
您可以直接使用 .xml 文件中创建的延迟元素callBackend
。
function callBackend(count) {
var deferred = $.Deferred();
setTimeout(function() {
$("div").append("<p>" + count + "</p>");
deferred.resolve();
}, 500);
return deferred;
}
$(function() {
$("a").click(function() {
var promises = [];
for (i = 1; i <= 10; i++) {
var deferred = callBackend(i)
promises.push(deferred);
}
$.when.apply($, promises).then(function() {
$("div").append("<p>All done!</p>");
});
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句