任何人都可以告诉我如何并行激活两个(或更多)JavaScript AJAX函数?
答案 0 :(得分:14)
这是不可能的。 Javascript只能在单个线程中工作,并且无法实际并行运行两个函数。你需要打一个电话然后另一个电话。当返回数据或发生错误/超时时,将调用这些回调(不一定与调用方法的顺序相同)。只有当一个回调完成时,才允许第二个回调运行。
还要记住,浏览器会限制活动ajax调用的数量。因此,如果您尝试进行太多的ajax调用,可能会等待(阻止所有javascript代码)以完成其他调用。
答案 1 :(得分:6)
搜索网络工作者。这些是现代浏览器中的一种新功能,可能在旧版本中不可用。
答案 2 :(得分:0)
这是你要找的吗?
setTimeout('JsFunction1(val);', 0);
setTimeout('JsFunction2(val);', 0);
答案 3 :(得分:0)
使用几个'setInterval'可以使并行运行成为可能,尽管它仍然可以在单个核心上运行。以下代码是将函数func与数据“datas”数组并行化的示例。要运行它,请使用Parallel(func,datas),其中func是全局函数的名称,datas是一个数据数组,每个数据都作为func的输入。
var i_array=new Array();
function Parallel(func,datas){
$(datas).each(function(i,v){
i_array[i]=setInterval(function(){
clearInterval(i_array[i]);
window[func](datas[i]);
},10);
});
}
这是jsfiddle test。整数中的时间戳显示两个ajax并行运行。
答案 4 :(得分:0)
使用Web Workers以并行方式运行任务
您可以在此处获得教程:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
此外,这个利用网络工作者的图书馆在谷歌上出现得非常快:https://parallel.js.org/
答案 5 :(得分:-1)
使用window.open()调用新页面。该页面将调用第一个js函数。在window.open()调用第二个函数之后,您在技术上并不等待第一个函数完成。你只需等待window.open()执行,然后第二个就会执行。
答案 6 :(得分:-2)
Javascript作为单个线程运行,如果您要进行的请求没有IO,那么这是不可能的,如果涉及IO操作,您可以很好地执行这两个函数另一方面,javascript的本质将在等待IO时开始执行下一个函数。 通常在支持线程的语言中,在线程的CPU休息期间自动实现相同的操作。