gpt4 book ai didi

javascript等待多个异步ajax响应不起作用

转载 作者:行者123 更新时间:2023-11-30 06:55:06 25 4
gpt4 key购买 nike

我一直在尝试在异步模式下调用多个 ajax 调用,然后在继续之前等待所有 ajax 调用完成。我正在使用 jquery.when()。

var results_array = [];
var num = 0;
var promises = [];

ldap_cmd_array.forEach(element => {
var myldap = ldap_data;
myldap.push({
"name": "cmd",
"value": element
});
console.log(++num);
promises.push(ajaxCall(myldap, 'aaa',
// success callback
function (data) {
console.log(--num);
results_array.push(data);
console.log('pass');
},
//error callback
function (err) {
//Do nothing
console.log(--num);
console.log('fail');
}
));
});
$.when.apply($, promises)
.then(function() {
console.log(results_array);
});

但在输出中,我看到 results_array 在所有 ajax 调用完成之前正在打印。我不确定我哪里出错了。需要帮忙?提前致谢。

注意:附上输出图片。

Chrome browser console output

最佳答案

终于解决了。感谢 Zim84,您的指针实际上解决了我的问题,荣誉!!

var results_array = [];
var num = 0;

var promises = [];
console.log(ldap_data);
ldap_cmd_array.forEach(element => {
var myldap = ldap_data.slice(); //to copy a javascript object
myldap.push({
"name": "cmd",
"value": element
});
var dObject = new $.Deferred();
console.log(++num);
promises.push(dObject);
ajaxCall(myldap, 'taaa',
// success callback
function (data) {
console.log(--num);
dObject.resolve();
results_array.push(data);
console.log('pass');
},
//error callback
function (err) {
//Do nothing
dObject.resolve();
console.log(--num);
console.log('fail');
}
);
});
$.when.apply($, promises)
.then(function () {
console.log('I should print after all promises');
console.log(results_array);
});

enter image description here

关于javascript等待多个异步ajax响应不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51318093/

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