好的,我一直在寻找解决这个问题,但由于JavaScript是单线程的,我不确定它是否可能。你们知道是否有其他选择吗?
这是我想要完成的事情:
我正在制作十个异步请求以从服务器获取数据。一旦收到所有十个响应,或者经过4000毫秒后,我想继续执行我的逻辑。
如果我使用java,我可以简单地触发十个不同的线程并让我的主线程休眠。一旦收到所有十个响应或经过了4000毫秒,我就可以中断线程并继续执行。我只是不知道如何在JavaScript中执行此操作。
有什么想法吗?
答案 0 :(得分:0)
在我的例子中,我每隔100毫秒激活Do(),最多10次......这是非常基本的。
var _timeoutExpired = false;
var _count = 0;
function Do() {
window.clearInterval( intr);
if ( _timeoutExpired == false )
{
... your code..
}
else{
window.clearInterval( intr);
return;
}
_count++;
if ( _count == 10 ) {
window.clearInterval( intr);
}
else{
intr = window.setInterval(Do,100 );
}
}
function Timeout() { _timeoutExpired = true; }
var intr = window.setInterval(Do,100 );
window.setTimeout(Timeout,4000);
答案 1 :(得分:0)
只是喜欢
var responses = [],
handleResponses = true;
function do_ajax_calls(){
//do you ajax calls here and call ajax_callback as their callback
}
function ajax_callback(response){
if (!handleResponses) return;
responses.push(response)
if (responses.length == 10){
final_callback()
}
}
function final_callback(){
handleResponses = false;
//do whatever with the existing responses here
}
setTimeout(function(){
final_callback();
}, 4000)