gpt4 book ai didi

javascript - 在异步生成器 JS 中处理同步流

转载 作者:行者123 更新时间:2023-12-04 15:27:05 25 4
gpt4 key购买 nike

我正在我的逻辑中实现一个生成器,但我不清楚

function *generator {
yield synchronousFunc()
yield asyncFunc()
// should wait till asyncFunc() is completed
// before calling next yield
yield anotherSynchronousFunc()
yield ...
}

如果我将此 generator 转换为带有 async/await for 的 async generator,它将如何工作

for await (const item of generator()) {}

当大部分 yield 是同步的。

async generator 将如何在幕后处理 yield 的同步部分?

也许这是一个愚蠢的问题,但我正在尝试了解生成器的工作原理

最佳答案

您应该在生成器前面放置一个 async 关键字以将其转换为异步生成器。

这是一个你可以运行的例子

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)
}
})()

This resource帮助我培养了对生成器和异步生成器的直觉。

关于异步生成器如何在幕后工作,它与生成器关系不大,而与异步和等待有关。这是 async/await under the hood

除非您在 redux-saga 生成器中运行大量 CPU 密集型工作负载,否则即使您的大部分代码是同步的,您也不必担心异步生成器发生的额外 promise 包装。

关于javascript - 在异步生成器 JS 中处理同步流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62041213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com