26行JavaScript代码 仿async的 并行执行和序列执行函数
2018-07-20 来源:open-open
[HTML]代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title> </title>
</head>
<body>
<script>
//并行执行
var parall=function(arr,call){
if(!(arr&&arr.length))return;
var endfn=(function(len,call){
var results=[];
return function(data){
results.push(data);
if(results.length==len)call(results);
}
})(arr.length,call);
for(var i=0,item;item=arr[i++];){
item(endfn);
}
}
//序列执行
var sear=function(arr,call){
if(!(arr&&arr.length))return;
var i=0;
!function endfn(data){
if(!arr[i]){
call(data);
return;
}
if(data)arr[i++](data,endfn);
else arr[i++](endfn);
}();
}
//TEST
parall([function(call){
setTimeout(function(){
console.log('one')
call('one');
},1000);
},function(call){
setTimeout(function(){
console.log('two')
call('two');
},1000);
}],function(r){
console.log(r);
})
sear([function(call){
setTimeout(function(){
console.log('one')
call('one');
},1000);
},function(para,call){
setTimeout(function(){
console.log(para+'two')
call(para+'two');
},1000);
}],function(r){
console.log(r);
})
</script>
</body>
</html>
标签: 代码
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐