16. Generators

Generator 函数是 ES6 的新特性,它允许一个函数返回的可遍历对象生成多个值。

在使用中你会看到 * 语法和一个新的关键词 yield:

  1. function *infiniteNumbers() {
  2. var n = 1;
  3. while (true){
  4. yield n++;
  5. }
  6. }
  7. var numbers = infiniteNumbers(); // returns an iterable object
  8. numbers.next(); // { value: 1, done: false }
  9. numbers.next(); // { value: 2, done: false }
  10. numbers.next(); // { value: 3, done: false }

每次执行 yield 时,返回的值变为迭代器的下一个值。