JavaScript Async Iterators


An async function is one that returns a promise. await yields to the caller until the promise resolves and then continues with the result.

An iterator allows the collection to be looped through with a for-of loop.

An async iterator is a collection where each iteration is a promise which can be awaited using a for-await-of loop.

Async iterators are a stage 3 proposal. They are in Chrome Canary 60 with --harmony-async-iteration


  • async function* asyncGenerator() {}
  • yield await asyncOperationWhichReturnsAPromise();
  • for await (let result of asyncGenerator()) { /* result is the resolved value from the promise */ }


An async iterator is a declarative pull stream as opposed to an Observable's declarative push stream.

Useful Links