WellKnownSymbols (WN01)
1: // Asynchronous generator and iterator
2: async function* asyncNumberGenerator() {
3: let i = 0;
4: while (i < 5) {
5: await new Promise(res => setTimeout(res, 1000));
6: yield i++;
7: }
8: }
9: const asyncIterator = asyncNumberGenerator()[Symbol.asyncIterator](); //Symbol.asyncIterator must be used to iterate over result of async generator function
10:
11: (async ()=>{ // async IIFE
12:
13: console.log(await asyncIterator.next()) // { value: 0, done: false }
14:
15:
16: console.log(await asyncIterator.next()) // (after approximately 1 second) { value: 1, done: false }
17: })();
18:
19: // Also can be used with for await...of loop:
20: // (async () => {
21: // for await (const num of asyncNumberGenerator()) {
22: // console.log(num) // Log number when promise resolved in async generator
23: // }
24: // })();
Symbol.asyncIterator is used to obtain an asynchronous iterator from an asynchronous iterable, such as the one returned by an asynchronous generator function (async function*).
{ value: 0, done: false }
{ value: 1, done: false }
WellKnownSymbols context:
ES6 context:
Comments (
)
)
Link to this page:
http://www.vb-net.com/JavascriptES6/WN01.htm
|
|