> echo "Welcome to My Tech Zone"

$ whoami

> Tech Explorer & Code Artist

$ ls social

> GitHub

> larryxue.dev

javascript 生成器和迭代器

前置知识

  1. 生成器函数会返回一种称为Generator的迭代器
  2. 迭代器是一个对象,定义一个序列,并在终止时返回一个返回值
  3. Symbol.iterator为每一个对象定义了默认的迭代器,可以被for..of循环使用
  4. yield* 用于委托给另一个generator或可迭代对象

代码

// 生成器函数gen1
function* gen1() {
  yield 'y1';
  yield 'y2';
  yield 'y3';
}

// 生成器函数gen2
function* gen2() {
  yield 'x1';
  yield* gen1();
  yield 'x3';
}

class Test {
  constructor() {
      this.persons = ['azoux1', 'azoux2', 'azoux3'];
    }
    *[Symbol.iterator]() { // 类支持迭代器方法,因此可以添加一个默认的迭代器
      // yield* this.persons.entries();
      yield* gen2();
    }
}

let t = new Test();
for (let item of t) {
  console.log(item); // 输出: x1 y1 y2 y3 x3
}
posted @ 2022-02-13 18:04  azoux  阅读(74)  评论(0)    收藏  举报