----Generators 生成器
function* abc(){
yield 'aa';
yield 'bb'; //一个简单的生成器
}
let temp = abc(); //创建一个迭代器
console.log(temp.next()); // value: 'aa', done: false
console.log(temp.next()); // value: 'bb', done: false
console.log(temp.next()); // value: 'undefined', done: true
---------------------------------
function *createGenerator() {
for(let i=0;i<20;i++) {
yield i
}
}
const generator = createGenerator()
console.log(generator.next())
console.log(generator.next())
运行结果
{ value: 0, done: false }
{ value: 1, done: false }
---------
虽然可以在生成器对象上手动调用 next,但我们主要是要在循环中使用。看一下这个稍作修改的程序。
function *createGenerator() {
for(let i=0;i<5;i++) {
yield i
}
}
const generator = createGenerator()
for(const value of generator) {
console.log(value)
}
当在 for...of 循环中使用生成器对象时,每次循环都会在生成器对象上调用 next,并用产生的值填充变量(上面的 value)。运行该程序将会输出以下内容:
0
1
2
3
4
本文介绍了JavaScript生成器的基本概念,通过实例展示了如何创建和使用生成器,以及for...of循环在生成器上的应用。重点讲解了yield关键字和生成器的生命周期。
1239

被折叠的 条评论
为什么被折叠?



