node.js - promise node.js 类生成器方法

标签 node.js bluebird es6-promise

我正在尝试在以下代码中 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/

相关文章:

node.js - Node.js 上的 getElementById 函数

node.js - 如何从 express 中的应用程序对象中获取请求对象?

javascript - Node.js: 'yield' 关键字的 promise 回调库

javascript - 修复相互依赖的嵌套 promise 的问题

javascript - 来自 Node js的多个系统调用

node.js - 同一域的 Django 和 Node 进程

javascript - Mongoose promise 不起作用

javascript - 如何在 readystatechange 上 promise AJAX 请求?

amazon-web-services - 在AWS Lambda中使用Promise.all()

node.js - 使用 Nodejs Vows (BDD) 测试 Bluebird Promise