我试图在下面的代码中提出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/