当前位置: 首页 > 工具软件 > generator > 使用案例 >

generator 中 调用另一个 generator

隆璞
2023-12-01

(1)for…of循环可以自动遍历 Generator 函数运行时生成的Iterator对象

function doAutomaticTraversal () {
  let arry = []
  function* foo () {
    yield 1
    yield 2
    yield 3
    yield 4
    yield 5
    return 6
  }
  for (let v of foo()) {
    arry.push(v)
  }
  return arry
}

(2)generator 中 手动 调用另一个 generator

function iteratorCallback () {
  let arr = []
  function* foo () {
    yield 'a'
    yield 'b'
  }

  function* bar () {
    yield 'x'
    // 手动遍历 foo()
    for (let i of foo()) {
      arr.push(i)
    }
    yield 'y'
  }
  for (let v of bar()) {
    arr.push(v)
  }
  return arr
}

(3)generator 中 自动 调用另一个 generator

function iteratorAutoCallback () {
  let arr = []
  function* foo () {
    yield 'a'
    yield 'b'
    yield 'c'
  }

  function* bar () {
    yield 'x'
    yield * foo()
    yield 'y'
  }
  for (let v of bar()) {
    arr.push(v)
  }
  return arr
}
 类似资料: