1. 首页
  2. 开发

bluebird的coroutine方法(类似co)

Promise.coroutine

可以像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
...
收藏

暂无评论

登录后可以进行评论。没有账号?马上注册