Вы должны поместить ключевое слово async
перед своим генератором, чтобы преобразовать его в асинхронный c генератор.
Вот пример, который вы можете запустить
async function* asyncGenerator() {
yield 1
yield 2
yield Promise.resolve(3)
yield 4
yield 5
}
(async () => {
for await (const n of asyncGenerator()) {
console.log(n)
}
})()
Этот ресурс помог мне развить мою интуицию в генераторах и генераторах asyn c.
Что касается того, как asyn c генераторы работают под капотом, это меньше связано с генераторами, а больше связано с asyn c и ожиданием. Вот async / await под капотом
Если вы не используете много рабочих нагрузок с интенсивным процессором в генераторах redux-saga, вы должны быть в порядке, чтобы не беспокоиться о дополнительной упаковке обещаний, которая происходит с генераторами asyn c, даже если большая часть вашего кода - syn c.