生成器是可以随时随地暂停和继续执行的函数。在调用生成器函数时,不会立即执行函数,而是返回一个代表该生成器的对象,使用该对象可以随时暂停和继续执行函数。
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命名空间的一些心得 2023-12-01
- shell之发送html格式邮件 2023-10-29
- CSS background image设置:如何为网站增添一份独特美感 2023-10-08
- 如何优化CSS中的文本大小设置问题 2023-10-08
- 使用php,mysql和html创建登录表单 2023-10-26
- ajax局部刷新实例 (三种方法推荐) 2023-01-31
- md转html(linux) 2023-10-25
- 通过抓取淘宝评论为例讲解Python爬取ajax动态生成的数据(经典) 2022-10-17
- Ajax实现注册并选择头像后上传功能 2023-01-26
- 初探 vite2 + vue3 2023-10-08