深入了解ES6的Generator

什么是 Generator

Generator 是用来控制循环流程,主要是解决异步编程嵌套层级较深的问题。

ES6 如何让遍历停下来

ES5 中循环一旦执行就无法停止;

1
2
3
4
5
6
7
8
9
10
11
12
function loop() {
for (let i = 0; i < 5; i++) {
console.log(i);
}
}

loop();
// 0
// 1
// 2
// 3
// 4

而使用 Generator 可以将执行的循环停下来,步骤如下;

  1. 在 loop 前面加上*;
  2. 在输出前面加上 yield;
  3. 定义一个变量将 loop 赋值给_loop;
1
2
3
4
5
6
7
8
9
10
11
12
13
function* loop() {
for (let i = 0; i < 5; i++) {
yield console.info(i);
}
}
const _loop = loop();
//这个时候没有输出,若要输出调用next方法
l.next(); //0
l.next(); //1
l.next(); //2
l.next(); //3
l.next(); //4
l.next(); //循环执行完毕,不会输出任何东西