原生JavaScript实现Ajax异步请求(4)
另一种方法是设置一个定时任务去轮训是否所有ajax请求都完成,需要在每个ajax的成功回调中去设置一个标志。
这儿可以用是否获得值来判断,也可以设置标签来判断,用值来判断时,要注意设置的值和初始相同的情况。
var all_ret = { ret1: null, // 第一个ajax标识 ret2: null, // 第二个ajax标识 ret3: null, // 第三个ajax标识 }; ajax({ url: '/get1.php?id=1', success:function(ret) { all_ret['ret1'] = ret; // 修改第一个ajax请求标识 } }); ajax({ url: '/get2.php?id=1', success:function(ret) { all_ret['ret2'] = ret; // 修改第二个ajax请求标识 } }); ajax({ url: '/get3.php?id=1', success:function(ret) { all_ret['ret3'] = ret; // 修改第三个ajax请求标识 } }); var repeat = setInterval(function(){ // 遍历是否所有ajax请求标识都已被修改,以此判断是否所有ajax请求都已完成 for(var item in all_ret) { if (all_ret[item] === null){ return; } } // todo, 到这儿所有ajax请求均已完成 clearInterval(repeat); }, 50); // 调用次数可以适当调整,不应设的过小或者过大