承诺 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 做了什么)。
我正在尝试在以下代码中承诺 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 做了什么)。