📅  最后修改于: 2023-12-03 14:41:01.135000             🧑  作者: Mango
ES6 生成器是一种函数,它可以暂停函数的执行并返回多个值,然后在需要时恢复执行。这种函数使用 function*
关键字来定义,并使用 yield
关键字在函数中暂停和恢复代码的执行。
要定义一个 ES6 生成器,需要使用 function*
关键字将一个函数标记为生成器。在这个函数中,可以使用 yield
关键字将代码的执行暂停,并返回一个值。下面是一个简单的例子:
function* myGeneratorFunction() {
yield 'hello';
yield 'world';
return 'done';
}
在这个例子中,myGeneratorFunction
是一个生成器函数。它通过 yield
关键字在 hello
和 world
值之间暂停了代码的执行,并在完成后返回了 done
值。
要使用一个生成器函数,需要调用它并将其结果赋值给一个变量。这将返回一个生成器对象,该对象可以使用 .next()
方法来逐步执行生成器函数的代码,或使用 .return()
、.throw()
和 .throw()
方法来中止或抛出异常。
下面是一个简单的例子,演示如何使用生成器函数来遍历数组:
function* iterateArray(array) {
for (let i = 0; i < array.length; i++) {
yield array[i];
}
}
const myArray = [1, 2, 3];
const myIterator = iterateArray(myArray);
let result = myIterator.next();
while (!result.done) {
console.log(result.value);
result = myIterator.next();
}
在这个例子中,iterateArray
是一个生成器函数,用于逐步遍历一个给定的数组,并使用 yield
关键字返回每个值。然后,我们使用调用 iterateArray
函数创建一个生成器对象 myIterator
。我们可以使用 next()
方法来逐步执行生成器函数的代码,并输出 1
、2
和 3
。
ES6 生成器具有以下优点:
yield
关键字来暂停和恢复代码的执行,在某些情况下,这可以简化异步代码的编写。ES6 生成器是一种强大且灵活的函数类型,可以在需要时逐步产生多个值和暂停和恢复代码的执行。在某些情况下,它可以极大地简化异步代码的编写,并提高代码的可读性和表达力。如果你还没有尝试过使用生成器编写代码,那么我强烈建议你尝试一下!