Skip to content

Latest commit

 

History

History
32 lines (26 loc) · 914 Bytes

repeatGenerator.md

File metadata and controls

32 lines (26 loc) · 914 Bytes
标题 标签
repeatGenerator(重复生成器) function,generator(函数,生成器)

创建一个生成器,无限期地重复给定的值。

  • 使用非终止 while 循环,每次调用 Generator.prototype.next() 时都会产生一个值。
  • 如果传递的值不是未定义的,则使用 yield 语句的返回值来更新返回值。
const repeatGenerator = function* (val) {
  let v = val;
  while (true) {
    let newVal = yield v;
    if (newVal !== undefined) {
      v = newVal;
    }
  }
};

调用方式:

const repeater = repeatGenerator(5);
repeater.next(); // { value: 5, done: false }
repeater.next(); // { value: 5, done: false }
repeater.next(4); // { value: 4, done: false }
repeater.next(); // { value: 4, done: false }

应用场景