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