您的位置:首页 > Web前端 > JavaScript

不同js异步函数同步

2016-05-01 15:06 555 查看
不同函数达到同步的函数模拟

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: