你可以在Generator函数中使用yield*
关键字来调用另一个Generator函数,下面的例子中,我们有两个Generator函数,g1
和g2
。我们想要在g1
中调用g2
,并读取生成的值:
code/generators/call-another.js
function* g2() {
yield 2
yield 3
}
function* g1() {
yield 1
yield* g2()
yield 4
}
const vals = [...g1()]
console.log(vals) // -> [1,2,3,4]
上面的代码块中,我们先调用了g1
函数,其执行过程大致为:
- 第一个
yield
表达式生成了值1 - 接下来,遇到了
yield* g2()
,它会生成g2
函数中所有即将被生成的值,也就是2和3。 - 最后,我们返会
g1
函数,并生成最后一个值4。