26行JavaScript代碼 仿async的 并行執行和序列執行函數
[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> 本文由用戶 oofw5751 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!