bluebird 的 coroutine 方法 (类似 co )
· 阅读需 1 分钟
可以像co
一样包裹generator函数,进行使用yeild的异步操作。
使用
Promise.coroutine(GeneratorFunction(...arguments) generatorFunction) -> function
示例
var Promise = require("bluebird");
function PingPong() {
}
PingPong.prototype.ping = Promise.coroutine(function* (val) {
console.log("Ping?", val)
yield Promise.delay(500)
this.pong(val+1)
});
PingPong.prototype.pong = Promise.coroutine(function* (val) {
console.log("Pong!", val)
yield Promise.delay(500);
this.ping(val+1)
});
var a = new PingPong();
a.ping(0);
Running the example:
$ node test.js
Ping? 0
Pong! 1
Ping? 2
Pong! 3
Ping? 4
Pong! 5
Ping? 6
Pong! 7
Ping? 8
...