在Generator函数中调用另一个Generator函数

你可以在Generator函数中使用yield*关键字来调用另一个Generator函数,下面的例子中,我们有两个Generator函数,g1g2。我们想要在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。
用户头像
登录后发表评论