#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
, чтобы меня вызывали.