Skip to content
/ xaa Public

async/await/Promise helpers - delay, defer, timeout, each, map, filter

License

Notifications You must be signed in to change notification settings

jchip/xaa

Repository files navigation

xaa

async/await and Promise helpers.

github: https://github.com/jchip/xaa

Install and Usage

npm i xaa

APIs

API references https://jchip.github.io/xaa/

Or just use your IDE for hint if it supports TypeScript and typedoc.

Examples:

xaa.timeout

import { timeout } from "xaa";

async function test() {
  // will throw TimeoutError
  await timeout(50, "took too long").run(xaa.delay(100));
  // will run the two functions and wait for them
  await timeout(50, "oops")
    .run([
      () => xaa.delay(10, 1),
      () => xaa.delay(15, 2),
      "some value",
      Promise.resolve("more value")
    ])
    .then(results => {
      // results === [1, 2, "some value", "more value"]
    });
}

xaa.map

import { map } from xaa;

async function test() {
  return await map(
    ["http://url1", "http://url2"],
    async url => fetch(url),
    { concurrency: 2 }
  );
}

License

Licensed under the Apache License, Version 2.0.