不同函數達到同步的函數模擬
funcList是函數執行函數的隊列,其中回調函數中flag=true是同步標記量
<script>
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();
}
</script>
以上這篇不同js異步函數同步的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。