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
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐