ocSteps 是一个JavaScript异步执行辅助工具,主要用于支持 Node.js 中的大量异步API以及操作,以及前端浏览器里的异步任务(例如Ajax)。如果你听说过“回调地狱”这个词,那么,ocSteps 的用途就很好解释了:它尝试定义“回调天堂”。
ocSteps 维护一个动态的任务链,任务链上的每个节点都是一个可执行函数,这些函数称为 step ,ocSteps 会依次执行任务链上的每个 step 。任务链是动态的,可以在执行过程中向任务链添加 step ,这是 ocSteps 和其他流行的异步操作库的主要区别(例如 Step, Async.js):不是提供各种规则来定义执行顺序,而是在任务链的执行过程中逐步定义任务链。
根据我最近的Node.js开发经验,静态地定义任务链结构,实际上会制造许多繁琐的编码工作;而动态地“演进”任务链,更吻合我们在思考业务逻辑时的思路,这让开发编码更加流畅,并且明显减少编码工作。
ocSteps 参考了 Step 的设计,但是规则还要更简单(ocSteps包括注释和疏散的空行在内也只有200+行代码);并且 ocSteps 是为复杂、动态的任务链而设计。
$ npm i ocsteps
$ npm i -d $ make test
var Steps = require("ocsteps") ; // 和 Step 的用法很像 Steps( // 前一个函数的 return, 作为下一个函数的参数 function(){ var i = 1 ; console.log('step ',i) ; return ++i ; } , function(i){ console.log('step ',i) ; return ++i ; } , function(i){ console.log('step ',i) ; return ++i ; } ) ;
输出的结果是:
step 1 step 2 step 3