不同函数达到同步的函数模拟
funcList是函数执行函数的队列,其中回调函数中flag=true是同步标记量
var flag = false;
function funcTest(t,func){
setTimeout(function(){
(function(param){
console.log(param);
func();
}(t));
},t*1000);
}
var funcList = [];
funcList.push(function(){funcTest(4,function(){
flag = true;//同步标记量
})});//不同的异步函数添加进队列
funcList.push(function(){funcTest(3,function(){
flag = true;
})});//不同的异步函数添加进队列
funcList.push(function(){funcTest(2,function(){
flag = true;
})});//不同的异步函数添加进队列
dealFuncSync(funcList);
function dealFuncSync(funcList){
function callBackSync(){
if(!funcList||funcList.length==0){
console.log('end');
return;
}
flag = false;
funcList.shift()();
setTimeout(function(){
if(flag) {//控制队列函数同步
callBackSync();
}else{
setTimeout(arguments.callee,100);
}
},100);
}
callBackSync();
}
以上这篇不同js异步函数同步的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。
原文链接:https://www.f2er.com/js/48366.html