invok
一个基于Promise+generator(yield)的异步流程控制库
自述
好吧,这是一个轮子,功能上和TJ大神的co一模一样。
本来是我之前MVC框架内部使用的异步控制工具,现在重构一下单独剥离出来。
没有参考过co,思路基本上是一样的,但是我们的Promise风格完全不一样,他是基于es6的promise。
我是基于我的Promise A/+的一个实现(没错又是一个轮子=。=)
非要说有啥特别的地方?我自认为代码结构相对清晰易懂一些(只有70行),好吧,只是自认为而已。
对generator实现流程控制感兴趣的可以看下源代码。
另外自我打脸的是,浏览器运行版本为了不多引用promise库,用的也是es6风格promise(浏览器自带的promise)=。=
安装
npm install invok
额不要吐槽我的名字,其实是就是invoke这个词的简写。
一来invoke普通单词也没啥意思,二来npm被别人抢注了,囧rz。
测试用例+用法
var invok = ;var Promise = ; { //一个异步过程(返回promise) //这也代表了我的promise风格,这里把promise作为一种特殊的异步数据抽象。 //所以它像普通数据一样经历创建、填充(异步的)和返回的过程 //这样一来,同步函数返回同步数据,异步函数返回异步数据,写法上感觉一致化。而不是每次都把异步函数包装成一个promise(es6的风格) var p = ; ; return p;}/** * 用法跟co大致一样 * invok接收三个参数 * 第一个参数可以是/函数/generator函数/generator/promise/普通数据 * 当然 主要是用来运行generator函数的。 * 第二个参数是运行第一个参数(如果是函数或者generator函数)时的this * 第三个参数是运行第一个参数(如果是函数或者generator函数)时的参数数组 */ ;