5 回答
TA贡献1866条经验 获得超5个赞
简单粗暴:监听一段时间(自定义,如20秒)
//两个请求是否完成的状态,在每个请求里面回填这个状态,改成1
var wait = 20, result = { ajax1: 0, ajax2: 0 };
var siFlag = setInterval(function () {
wait--;
if (wait < 1) {
clearInterval(siFlag);
}
var isComplete = true;
for (var i in result) {
if (!result[i]) {
isComplete = false;
break;
}
}
console.log(wait);
//都完成时
if (isComplete) {
console.log("isComplete TODO");
}
}, 1000);
//直接拷贝到控制台执行,能看效果,运行的过程中,尝试改变result对象两个属性的值
TA贡献1846条经验 获得超7个赞
用Promise并行吧,几个异步事件一起执行,一起拿到结果,最后完成那个完成了,才获取所有的异步返回值(集合)
var a = function(){
return new Promise(function(resolve, reject){
setTimeout(function(){
resolve('a');
},2000);
})
}
var b = function(){
return new Promise(function(resolve, reject){
setTimeout(function(){
resolve('b');
},1000);
})
}
var c = function(){
return new Promise(function(resolve, reject){
setTimeout(function(){
resolve('c');
},3000);
})
}
Promise.all([a(),b(),c()]).then(function(val){
console.log(val);
})
你如果是只要有请求完成就行,那么用竞速,最先完成的完成了就执行,返回最先完成的那个异步的值
Promise.race([a(),b(),c()]).then(function(val){
console.log(val);
})
添加回答
举报
