生成器是可以随时随地暂停和继续执行的函数。在调用生成器函数时,不会立即执行函数,而是返回一个代表该生成器的对象,使用该对象可以随时暂停和继续执行函数。
JavaScript之生成器_动力节点Java学院整理
生成器是什么?
生成器是可以随时随地暂停和继续执行的函数。在调用生成器函数时,不会立即执行函数,而是返回一个代表该生成器的对象,使用该对象可以随时暂停和继续执行函数。
如何创建生成器?
使用关键字function*
创建生成器函数。如下所示:
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
其中yield
关键字可以用来暂停函数执行,并将控制权交回给调用者,返回的值会被包装在一个对象中,并携带状态信息。
如何使用生成器?
首先调用生成器函数,获取生成器对象,然后可以使用next()
方法来触发生成器函数的执行,每次调用next()
方法都会将生成器函数的执行推进一步,直到遇到yield
关键字时暂停执行。
示例代码如下:
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
const generator = generateSequence();
console.log(generator.next()); // {value: 1, done: false}
console.log(generator.next()); // {value: 2, done: false}
console.log(generator.next()); // {value: 3, done: true}
可以在生成器中使用循环和条件语句
由于生成器函数和普通函数没有区别,因此可以在生成器函数中使用循环和条件语句。
示例代码如下:
function* fibonacci() {
let [prev, curr] = [0, 1];
while (true) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
const generator = fibonacci();
for (let i = 0; i < 10; i++) {
console.log(generator.next());
}
上面的代码可以生成斐波那契数列的前10个数。
结论
通过生成器,我们可以实现一些复杂的状态机等逻辑,使代码更加简洁易懂。同时也可以应用在异步编程中,方便进行事件循环和异步操作的控制。
本文标题为:JavaScript之生成器_动力节点Java学院整理


基础教程推荐
- JavaScript实现三种常用网页特效(offset、client、scroll系列) 2023-08-12
- vue 使用$refs获取表单内容及v-model双向数据绑定 2023-10-08
- 学习如何使用小写字母CSS提高网站的可读性和可维护性 2023-10-08
- 将xml文件作为一个小的数据库,进行学生的增删改查的简单实例 2023-01-20
- Vue cli写的一款PC端音乐播放器(网易云的API) 2023-10-08
- VUE——使用easy-typer-js实现打字机效果 2023-10-08
- vue项目地址上的#是哪来的?(前端路由的hash模式和history模式) 2023-10-08
- 将多个查询数据合并到单个HTML表中(PHP,MySQL) 2023-10-26
- HTML 表单到 ExtJS 表单 2022-09-15
- layui tableSelect.js实现数据表格下拉框(单选或者多选) 2023-11-23