一、前人经验
找到了不错的博客,放在前面
Generator 函数的含义与用法
其中还有其他关于ES6异步编程相关的理论讲解博客,在这里记录一下。
二、什么是generator函数
在JavaScript中,Generator 函数是一种可以暂停和恢复执行的函数,它通过function*
语法来定义,并使用yield
关键字来产出值。Generator 函数返回一个 Generator 对象,该对象符合可迭代协议,因此可以使用for...of
循环或其他可迭代消费方法来迭代。
以下是 JavaScript 中 Generator 函数的一些特点和用法:
- 定义 Generator 函数:使用
function*
语法来定义一个 Generator 函数。 - 使用
yield
关键字:在 Generator 函数内部,yield
用于暂停函数执行并返回一个值。当再次调用 Generator 对象的next()
方法时,函数会从上次暂停的地方继续执行。 - 返回 Generator 对象:调用 Generator 函数时,它不会立即执行,而是返回一个 Generator 对象。
- 可迭代性:Generator 对象是可迭代的,因此可以通过
for...of
循环或扩展运算符(...
)来迭代。
下面是一个简单的 JavaScript Generator 函数示例:
function* simpleGenerator() {
yield 1;
yield 2;
yield 3;
}
// 创建 Generator 对象
const gen = simpleGenerator();
// 通过循环来迭代 Generator
for (const value of gen) {
console.log(value);
}
输出将会是:
1
2
3
每次调用gen.next()
时,simpleGenerator
函数都会执行到下一个yield
表达式,然后返回一个包含value
和done
属性的对象。value
属性是yield
表达式的结果,而done
属性是一个布尔值,表示 Generator 是否已经完成。
Generator 函数在处理异步操作、迭代大型数据集、以及其他需要分步骤处理的任务时非常有用。通过 Generator 函数,可以编写更清晰、更易于维护的异步代码。