【问题标题】:How to return thenable from wrapped generator function in Javascript?如何从Javascript中的包装生成器函数返回thenable?
【发布时间】:2017-02-08 08:19:29
【问题描述】:

我的项目中有这样一段代码:

co(function *asyncFn() {
    let browser = yield someAsyncOperation();
    return browser;
}).then(browser => browser.exit());

正如预期的那样,这不起作用,因为浏览器对象有方法then。我想知道是否有任何方法可以从包装的生成器函数中返回 thenable 对象。 (或者可能是其他一些库而不是 co 用于包装支持这种情况的生成器)。

【问题讨论】:

    标签: javascript asynchronous promise co


    【解决方案1】:

    co 接受一个生成器并返回一个 Promise 返回函数,它不会调用它。

    const fn = co(function* asyncFn() { ... })
    
    fn().then(() => browser.exit());
    

    【讨论】:

    • 感谢您的回复!在我的示例中,生成器函数返回浏览器对象,该对象是可用的,并且它破坏了我不希望调用 browser.then 的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多