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学院整理 - Python技术站