gpt4 book ai didi

javascript - 如何同步依赖于多个ajax请求响应的javascript代码?

转载 作者:行者123 更新时间:2023-11-28 21:22:02 25 4
gpt4 key购买 nike

通常,我会使用传递给“jQuery.getJSON”函数的回调函数在服务器响应后执行某些操作。在本例中,我在某些输入元素上应用了事件处理程序,但这些处理程序应该仅在多个 ajax 请求成功后执行。基本上我需要暂停事件处理程序的执行,直到我期望的一些数据可用。

在多线程语言中,我会使用互斥体/信号量来做到这一点,但由于 javascript 是单线程的,我想知道这样的事情是否可能。

最佳答案

执行此操作的一种手动方法是将 AJAX 调用放入数组中排队,然后计算收到的响应数,并等待该计数与原始队列的大小匹配(或者,弹出当响应完成时从队列中调用,并且当队列大小为 0 时,您知道您已经拥有了所有内容)。

您必须检查是否准备好继续进行 setTimeout 调用。

或者,您可以查看 jQuery 1.5+ 中的延迟支持

编辑:手动方法的快速而肮脏的示例:

var remoteCallA = function(){
$.getJSON('someurl', function(){
success++;
});
};

var remoteCallB = function(){
// etc
};

var whenAllDone = function(){
// do something when everything is done
};

var checkAllDone = function(){
if(success === remoteCalls.length){
whenAllDone();
}
else{
setTimeout(checkAllDone, 1000);
}
};

var remoteCalls = [remoteCallA, remoteCallB];
var success = 0;
for(var i = 0, length = remoteCalls.length; i++){
remoteCalls[i]();
}

checkAllDone();

关于javascript - 如何同步依赖于多个ajax请求响应的javascript代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075015/

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