TODO:Generator
generator函数的执行可以被中断,使用*修饰函数名的函数为generator函数,在函数内可以使用yield关键字中断函数的执行。
generator函数被调用会返回generator对象但是函数内代码不会立即执行
generator对象结构如下{done: boolean, value: any},调用对象的next()方法会执行函数,执行遇到yield关键字会暂停。
yield关键字后面可以包含表达式,表达式会传给next().value。
next()可以传递参数,参数作为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
}