不同js异步函数同步

来源:互联网 发布:自动增长数字的js代码 编辑:程序博客网 时间:2024/05/16 06:06

不同函数达到同步的函数模拟

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>


0 0