Как вернуть значение из обернутой функции генератора в Javascript?

#javascript #asynchronous #promise #co

#javascript #асинхронный #обещание #co

Вопрос:

У меня есть такой код в моем проекте:

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

Как и ожидалось, это не работает, поскольку объект браузера имеет метод then . Интересно, есть ли какие-либо способы вернуть thenable объект из обернутой функции генератора. (или, возможно, некоторые другие библиотеки, а не co для оберточных генераторов, которые поддерживают такие случаи).

Ответ №1:

co принимает генератор и возвращает функцию, возвращающую обещание, но не вызывает ее.

 const fn = co(function* asyncFn() { ... })

fn().then(() => browser.exit());
  

Комментарии:

1. Спасибо за ответ! В моем примере функция генератора возвращает объект браузера, который является thenable, и он ломает вещи, поскольку я не хочу browser.then , чтобы меня вызывали.