wiki/content/20201030095741-javascript_for_await_of.md

812 B

date id title
2020-10-30 3dac2b04-4015-4c1f-847c-5e677aec1fc0 JavaScript For Await Of

Syntax

async function f() {
  for await (const x of createAsyncIterable(["a", "b"])) {
    console.log(x);
  }
}
// Output:
// a
// b

Rejections

Like await in async functions, th eloop throws an exception if next() returns a rejection:

function createRejectingIterable() {
  return {
    [Symbol.asyncIterator]() {
      return this;
    },
    next() {
      return Promise.reject(new Error("Problem!"));
    },
  };
}
(async function () {
  // (A)
  try {
    for await (const x of createRejectingIterable()) {
      console.log(x);
    }
  } catch (e) {
    console.error(e);
    // Error: Problem!
  }
})(); // (B)