如何循环来自生成器的 JavaScript 迭代器?

How to loop the JavaScript iterator that comes from generator?

假设我们有以下生成器:

var gen = function* () {
  for (var i = 0; i < 10; i++ ) {
    yield i;
  }
};

遍历迭代器的最有效方法是什么? 目前我通过手动检查 done 属性 是否设置为 true 来做到这一点:

var item
  , iterator = gen();

while (item = iterator.next(), !item.done) {
  console.log( item.value );
}

迭代任何可迭代对象(支持@@iterator 的对象)的最佳方法是使用for..of,像这样

'use strict';

function * gen() {
    for (var i = 0; i < 10; i++) {
        yield i;
    }
}

for (let value of gen()) {
    console.log(value);
}

或者,如果你想要一个数组,那么你可以使用 Array.from,像这样

console.log(Array.from(gen());
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]