An adalah obyek dengan metode yang bali . Obyek iku yen duwe metode — iku sing ndadekne lan spread bisa gawé. A () minangka cara sing mudah kanggo nggawé iterators sing bisa karo .
An adalah obyek dengan metode yang bali . Obyek iku yen duwe metode — iku sing ndadekne lan spread bisa gawé. A () minangka cara sing mudah kanggo nggawé iterators sing bisa karo .
next(){ value, done }[Symbol.iterator]for...offunction*yieldfunction* idGenerator() {
let id = 1;
while (true) { // infinite, but lazy — only computes on demand
yield id++; // pause here, return a value, resume on next()
}
}
const gen = idGenerator();
gen.next().value; // 1
gen.next().value; // 2 — execution resumed where it paused
Gedhe ideé: eksekusi stop ing saben yield lan mbalik maneh ing .next() sesuk, njaga kaanan lokal antaré panggilan. Ora ana sing dihitung nganti sampeyan takon.
// process a huge/infinite sequence without building it all in memory
function* take(iterable, n) {
let i = 0;
for (const x of iterable) {
if (i++ >= n) return;
yield x;
}
}
[...take(idGenerator(), 3)]; // [1, 2, 3] — from an infinite generator
const range = {
from: 1, to: 3,
*[Symbol.iterator]() { for (let i = this.from; i <= this.to; i++) yield i; },
};
[...range]; // [1, 2, 3] — works with for...of and spread
Generators ngidupake urutan malas/tanpa wates, iterasi khusus, lan streaming sing hemat memori.
Semono ugo dadi landasan perpustakaan async awal (co) lan ndasari iterasi async (for await...of).
Protokel iterator iku sing ngrungokne for...of, spread, lan destructuring ing arrays, Maps, Sets, lan strings.