generator 函数
+ 一种长得很像函数的玩意
+ 但是不是函数, 函数生成器(迭代器)
语法:
+ 再定义函数的时候, 再 function 后面 或者 函数名前面加一个 星号(*)
+ 函数内部可以使用一个 yield 关键字
=> 类似于 return 一样的作用
=> 可以给你制造一个结果
=> 让这个 generator 暂停
=> 当你再次回到这个 generator 的时候, 从上次 yield 继续向后执行代码
+ generator 的返回值是一个迭代器
=> 包含一个 next() 方法
=> 每一次 next 执行, 就会执行到下一个 yield 位置为止
// 当有了星号以后, fn 不再是一个函数了 function* fn() { console.log('我是第一段 代码') yield '第一段结束' console.log('我是第二段 代码') yield '第二段结束' console.log('我是第三段 代码') return '第三段结束' } // result 就是 fn 给生成一个 迭代器 const result = fn() console.log(result); // 第一次, 从 fn 的开头执行到第一个 yield, // 把 yield 后面的东西当作返回值 const first = result.next() console.log(first) // 第二次, 从第一次的 yield 后面开始执行到第二个 yield 结束 // 把 第二个 yield 后面的东西当作返回值 const second = result.next() console.log(second) const third = result.next() console.log(third)