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