为什么Javascript中的生成器函数第三次返回true

问题描述 投票:0回答:1

我的代码

function* cal() {
    yield 3;
    yield 5;
}

let calu = cal();
console.log(calu.next())
console.log(calu.next())
console.log(calu.next())

结果获取

{ value: 3, done: false }
{ value: 5, done: false }
{ value: undefined, done: true }

为什么生成器函数在第三次返回 true,而不是第二次控制台日志

javascript generator
1个回答
0
投票
第三次调用

.next()

 会在第二次 
yield
 之后运行代码。您的示例中没有(除了隐式返回),但我们可以添加一些:

function* cal() { console.log('a'); yield 3; console.log('b'); yield 5; console.log('c'); } let calu = cal(); console.log(calu.next()) console.log(calu.next()) console.log(calu.next())

第二个

.next()

 调用尚未返回 
done: true
,因为还有更多代码要执行。仅当执行到达生成器函数(或 
return
 语句)末尾后,生成器才完成。

© www.soinside.com 2019 - 2024. All rights reserved.