生成器是可以随时随地暂停和继续执行的函数。在调用生成器函数时,不会立即执行函数,而是返回一个代表该生成器的对象,使用该对象可以随时暂停和继续执行函数。
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学院整理
猜你喜欢
- layer.open()详细参数对照说明 2023-07-09
- AJAX请求是否真的不安全?谈一谈Web安全与AJAX的关系 2023-02-15
- expression将JS、Css结合起来 2022-10-16
- Ajax实现局部刷新的方法实例 2023-02-23
- JavaScript中常见的几种获取元素的方式 2023-07-10
- 基于JS实现点击图片在弹出层显示大图效果 2022-08-31
- HTML表格布局实际使用详解,是HTML入门学习中的基础知识 2023-10-27
- Linux中的grep,sed,find的使用方法 2022-07-24
- vue+element使用sortable拖拽实现行排序 2023-10-08
- 简单实现ajax三级联动效果 2023-02-14