我试图在下面的代码中提出someAsyncMethod。
当我运行代码时,someAsyncMethod的承诺永远不会被解决。
有人能告诉我我做错了什么吗?

'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*委托给它。
所以,你的代码变成:

var res = yield* c.someAsyncMethod();

不需要预先设定(我甚至不确定当被要求设定生成器函数时蓝鸟会做什么)。

关于node.js - Promisifying Node.js类生成器方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37852586/

10-09 22:11