承诺 node.js class 生成器方法

Promisifying node.js class generator method

我正在尝试在以下代码中承诺 someAsyncMethod。

当我 运行 代码时,someAsyncMethod 的 yield promise 从未得到解决。

谁能告诉我哪里做错了?

'use strict';
var someapi = require('./lib/absenceio');
var Promise = require('bluebird');

class CompanyController {
    constructor(currentUser, parameters) {

    }
    * someAsyncMethod () {      
        return yield someapi.listReasons(); // returns a promise
    }
}

Promise.coroutine(function*(){
    var c = new CompanyController();
    Promise.promisifyAll(c);    
    var res = yield c.someAsyncMethodAsync();
    console.log('never reached');
})();

someAsyncMethod() 是一个生成器函数,你不能直接 yield ,但你可以使用 yield*.

委托给它

所以,你的代码变成这样:

var res = yield* c.someAsyncMethod();

无需承诺(我什至不确定当被要求承诺生成器函数时 Bluebird 做了什么)。