This iterable produces an infinite sequence: 10, 20, 30, 40, and so on, each time next() is called.
// Home Made Iterable function myNumbers() { let n = 0; return { next: function() { n += 10; return {value:n, done:false}; } }; } // Create Iterable const n = myNumbers(); n.next(); // Returns 10 n.next(); // Returns 20 n.next(); // Returns 30 |
A JavaScript iterable is an object with a Symbol.iterator
method, which returns a next()
function. You can iterate over an iterable using for (const x of iterable) { }
.
// Create an Object myNumbers = {}; // Make it Iterable myNumbers[Symbol.iterator] = function() { let n = 0; done = false; return { next() { n += 10; if (n == 100) {done = true} return {value:n, done:done}; } }; } |
Now you can use for…of.
for (const num of myNumbers) { // Any Code Here } |
The Symbol.iterator method is called automatically by for…of, but we can also invoke it “manually”:
let iterator = myNumbers[Symbol.iterator](); while (true) { const result = iterator.next(); if (result.done) break; // Any Code Here } |