我的代码
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,而不是第二次控制台日志
.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
语句)末尾后,生成器才完成。