gpt4 book ai didi

javascript - 如何在中断 "for await"循环后*重新打开* AsyncIterator?

转载 作者:行者123 更新时间:2023-11-30 14:06:32 26 4
gpt4 key购买 nike

在函数中 testMultipleLoops2第一个之后for await , l将转向GeneratorStatus:<closed> ,我进行了大量研究,但没有找到重新打开它的方法。

const tryRecursive=async function*(i=0){console.count("tryRecursive");yield i++;yield*tryRecursive(i)}
const asyncDelay=(b,delay=1e3)=>new Promise((resolve,reject)=>setTimeout(()=>resolve(b()),delay))
const tryDelayYieldNumbers=async function*(){
for await(const i of tryRecursive()){
const result=await asyncDelay(()=>i)
yield result}}
const testMultipleLoops2=(async()=>{
const l=tryDelayYieldNumbers()
let count=3
for await(const i of l){if(count-->0)console.log(i);else break}
count=4
///But `l` is closed here, can't do future looping
for await(const i of l){if(count-->0)console.log(i);else break}
count=5
for await(const i of l){if(count-->0)console.log(i);else break}
})()

最佳答案

你要求的是不可能的。通过设计(并根据语言规范),即使您使用 break 提前终止循环。

参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of#Closing_iterators

关于javascript - 如何在中断 "for await"循环后*重新打开* AsyncIterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55276664/

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