TODO:Generator

generator函数的执行可以被中断,使用*修饰函数名的函数为generator函数,在函数内可以使用yield关键字中断函数的执行。

generator函数被调用会返回generator对象但是函数内代码不会立即执行 generator对象结构如下{done: boolean, value: any},调用对象的next()方法会执行函数,执行遇到yield关键字会暂停。

yield关键字后面可以包含表达式,表达式会传给next().valuenext()可以传递参数,参数作为yield的返回值。

function* generatorB(count) {
    console.log(count)
    const result = yield 5
    console.log(result * count)
}
const genB = generatorB(2)
genB.next() // 2
const genBValue = genB.next(7).value // 14
function *foo() {
  for(let i = 0; i < 3; i++) {
    yield i
  }
}
let f = foo()
while(true) {
  const { value, done } = f.next()
  console.log(value)
  if(done) break
}

异常处理

with iterator

results matching ""

    No results matching ""