JavaScript 迭代器、生成器与异步迭代全解析
1. 生成器作为默认迭代器
生成器对象实现了 Iterable 接口,生成器函数和默认迭代器被调用时都会产生迭代器,所以生成器非常适合用作默认迭代器。下面是一个简单的例子,默认迭代器可以用一行代码生成类的内容:
class Foo {
constructor() {
this.values = [1, 2, 3];
}
* [Symbol.iterator]() {
yield* this.values;
}
}
const f = new Foo();
for (const x of f) {
console.log(x);
}
// 1
// 2
// 3
在这个例子中, for...of 循环调用了默认迭代器(恰好是一个生成器函数),并产生了一个生成器对象。生成器对象是可迭代的,因此可以用于迭代。
2. 生成器的提前终止
和迭代器一样,生成器也支持“可关闭”的概念。一个对象要实现 Iterator 接口,必须有 next() 方法,还可以有一个可选的 return() 方法,用于提前终止迭代器。生成器对象有这两个方法,还有一个额外的 throw() 方法。
function* generat
超级会员免费看
订阅专栏 解锁全文
76

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



