Generator 函数是 ES6 引入的一种新的函数类型,它既可以生成一个序列,又可以在某个条件下停止执行,并在需要时恢复执行。Generator 函数非常适合处理那些需要按需计算的场景,例如处理大数据、生成随机数等。
Generator 函数的基本语法
Generator 函数的语法如下:
function* generator() {
yield value1;
yield value2;
// ...
}
其中,* 是 Generator 函数的标识符,yield 是 Generator 函数的关键字,用于生成一个值。在 Generator 函数中,每个 yield 都会生成一个值并暂停执行,只有调用 Generator 函数的 next() 方法时才会继续执行。
使用 Generator 函数
下面是一个简单的例子,展示了如何使用 Generator 函数生成一个序列:
function* sequence() {
let i = 1;
while (true) {
yield i++;
}
}
const sequenceGenerator = sequence();
console.log(sequenceGenerator.next()); // { value: 1, done: false }
console.log(sequenceGenerator.next()); // { value: 2, done: false }
console.log(sequenceGenerator.next()); // { value: 3, done: false }
// ...
在上面的例子中,我们定义了一个名为 sequence 的 Generator 函数,用于生成一个从 1 到无穷大的序列。在每次调用 next() 方法时,Generator 函数会生成下一个值并返回给调用者。
控制 Generator 函数的执行
除了通过 next() 方法控制 Generator 函数的执行外,我们还可以使用 return 语句来结束 Generator 函数的执行,并返回一个值:
function* generator() {
yield 1;
yield 2;
return 3;
}
const generatorObj = generator();
console.log(generatorObj.next()); // { value: 1, done: false }
console.log(generatorObj.next()); // { value: 2, done: false }
console.log(generatorObj.next()); // { value: 3, done: true }
在上面的例子中,我们在 Generator 函数的末尾使用了一个 return 语句,当调用第三次 next() 方法时,Generator 函数会返回 { value: 3, done: true },表示已经完成执行。
使用 for…of 循环遍历 Generator 函数生成的序列
除了使用 next() 方法遍历 Generator 函数生成的序列外,我们还可以使用 for…of 循环来遍历:文章来源:https://www.toymoban.com/news/detail-689330.html
function* sequence() {
let i = 1;
while (true) {
yield i++;
}
}
const sequenceGenerator = sequence();
for (let value of sequenceGenerator) {
console.log(value); // 1, 2, 3, ...
}
在上面的例子中,我们使用 for…of 循环来遍历 Generator 函数生成的序列,每次输出当前的值。需要注意的是,for…of 循环无法判断 Generator 函数是否已经完成执行,因此如果 Generator 函数已经结束,那么 for…of 循环将无法继续执行。文章来源地址https://www.toymoban.com/news/detail-689330.html
到了这里,关于【ES6】Generator 函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!