不同函數達到同步的函數模擬
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異步函數同步的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。