我正在尝试在以下代码中 promise someAsyncMethod。
当我运行代码时,someAsyncMethod 的 yielded 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*
委托(delegate)给它.
所以,你的代码变成这样:
var res = yield* c.someAsyncMethod();
不需要 promise 它(我什至不确定当被要求 promise 生成器函数时 Bluebird 做了什么)。
关于node.js - promise node.js 类生成器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37852586/