waterfall实现
Posted yzd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了waterfall实现相关的知识,希望对你有一定的参考价值。
1 function TaskRun(tasks,done) 2 { 3 var task_index=0; 4 done=done||((err)=>{ 5 err&&console.log(err); 6 }); 7 function next() { 8 if(task_index==tasks.length) {return done(null);} 9 var args=[].slice.call(arguments); 10 args.push(next); 11 try{ 12 tasks[task_index++].apply(this,args); 13 }catch(ex){ 14 return done(ex); 15 } 16 } 17 next(); 18 } 19 20 TaskRun([function(next){ 21 setTimeout(function(){ 22 console.log("one"); 23 next(1); 24 }, 10); 25 26 },function(num1,next){ 27 console.log("two"); 28 console.log(num1); 29 throw new Error("sfdsf"); 30 setTimeout(function(){ 31 console.log("last"); 32 next(3,4); 33 }, 10); 34 },function(num1,num2,next){ 35 console.log("5"); 36 console.log(num1); 37 console.log(num2); 38 }])
以上是关于waterfall实现的主要内容,如果未能解决你的问题,请参考以下文章
async源码学习 - waterfall函数的使用及原理实现