JavaScript Iterazione

Esempio

Un generatore è iterabile . Può essere ripetuto con una for...of istruzione e utilizzato in altri costrutti che dipendono dal protocollo di iterazione.

function* range(n) {
    for (let i = 0; i < n; ++i) {
        yield i;
    }
}

// looping
for (let n of range(10)) {
    // n takes on the values 0, 1, ... 9
}

// spread operator
let nums = [...range(3)];  // [0, 1, 2]
let max = Math.max(...range(100));  // 99

Ecco un altro esempio di generatore di utilizzo per oggetto iterabile personalizzato in ES6. Qui è utilizzata la funzione function * generatore anonimo function * .

let user = {
  name: "sam", totalReplies: 17, isBlocked: false
};

user[Symbol.iterator] = function *(){

  let properties = Object.keys(this);
  let count = 0;
  let isDone = false;

  for(let p of properties){
    yield this[p];
  }
};

for(let p of user){
  console.log( p );
}