语法: function* 函数名(){} -> 在普通的函数后面加上 *
说明:
- 当遇到 yield 关键字的时候函数就会暂停执行
- 需要把生成器的执行结果保存到变量里
- 手动控制 .next() 让函数什么时候继续往下执行
function* fn() {
yield console.log(1);
yield console.log(2);
yield console.log(3);
let a = yield 0;
console.log(a); // 参数
}
let n = fn(); // 一定要存储
n.next(); // 执行第一个暂停代码
n.next(); // 执行第二个暂停代码
n.next();
n.next();
n.next('参数');
- 通过 for of 循环可以获取生成器中的所有值
function* fn() {
yield 1;
yield 2;
yield 3;
}
let n = fn(); // 一定要存储
for (let v of n) {
console.log(v)
}