js提前终止迭代器
可选的return()方法用于指定在迭代器提前关闭执行的逻辑。
for-of循环通过break、continue、return或者throw提前退出
class Counter { constructor(limit) { this.limit = limit; } [Symbol.iterator]() { let count = 1, limit = this.limit; return { next() { if (count <= limit) { return { done: false, value: count++ }; } else { return { done: true }; } }, return() { console.log('提前退出'); return { done: true }; } }; } }测试下:
let counter1 = new Counter(5); for (let i of counter1) { if (i > 2) { break; //throw 'err'; } console.log(i); }结果如下: