【发布时间】:2019-08-12 02:03:14
【问题描述】:
在第一个for await之后的函数testMultipleLoops2中,
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}
})()
【问题讨论】:
-
我看到 0、1、2 输出到控制台 - 你看到了什么?你希望看到什么?
-
预期的 o/p 应该像 0,1,2,3,4,5,6,7,8,9,10,11。 @JaromandaX
-
期望的输出是
0, 1, 2, ... 11- 预期的输出就是你得到的。 -
谢谢!谢谢!谢谢! @Alnitak