gpt4 book ai didi

jquery - 来自数组的多个 ajax 调用并在完成时处理回调

转载 作者:行者123 更新时间:2023-12-03 21:46:47 24 4
gpt4 key购买 nike

我之前在 jQuery 中使用过 Promise,但是我在将其应用到这个场景时遇到了困难。我更喜欢使用 $.when() 和 $.done() 方法来实现此目的。

据我了解,我需要构建一个 $.Deferred 对象来记录请求,并在这些请求完成时触发回调。在我下面的代码中,回调是在 ajax 请求之前而不是之后触发的 - 也许我只是需要一些 sleep

我知道我的代码不完整,我一直在努力通过添加 for 循环来应用它。

http://jsfiddle.net/whiteb0x/MBZEu/

var list = ['obj1', 'obj2', 'obj3', 'obj4', 'obj5'];
var callback = function() {
alert("done");
};
var requests = [];

var ajaxFunction = function(obj, successCallback, errorCallback) {
for(i = 0; i < list.length; i++) {
$.ajax({
url: 'url',
success: function() {
requests.push(this);
}
});
}
};
$.when($.ajax(), ajaxFunction).then(function(results){callback()});

最佳答案

$.when 的参数应该是 $.ajax 的返回值,它也不需要单独调用 - 这是没有意义的。你想要这样的东西:

for (i = 0; i < list.length; i++) {
requests.push($.ajax(...));
}
$.when.apply(undefined, requests).then(...)

需要 .apply 的原因是 $.when 可以接受多个参数,但不能接受参数数组。 .apply 本质上扩展为:

$.when(requests[0], requests[1], ...)

这还假设请求可以按任何顺序完成。

http://jsfiddle.net/MBZEu/4/ -- 请注意,在所有成功消息之后,控制台都会记录“完成”。

关于jquery - 来自数组的多个 ajax 调用并在完成时处理回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14352139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com