std/async
2021-09-07 16:40:05 +09:00
..
deadline_test.ts feat(testing): add assertRejects, deprecate assertThrowsSync (#1101) 2021-08-09 14:59:52 +09:00
deadline.ts fix(async): make it so exception of deadline can be caught (#1105) 2021-08-07 01:13:25 -07:00
debounce_test.ts docs: correct typos (#1207) 2021-09-07 16:40:05 +09:00
debounce.ts chore: enable doc type checking (#1050) 2021-07-23 19:09:38 +09:00
deferred_test.ts feat(testing): add assertRejects, deprecate assertThrowsSync (#1101) 2021-08-09 14:59:52 +09:00
deferred.ts fix(async/deferred): rename .status -> .state (#1055) 2021-07-22 19:22:51 +09:00
delay_test.ts feat(async): add abort signal to delay (#1130) 2021-08-17 14:04:21 +09:00
delay.ts feat(async): add abort signal to delay (#1130) 2021-08-17 14:04:21 +09:00
mod.ts feat(async): add deadline to async module (#1022) 2021-07-12 08:44:57 -04:00
mux_async_iterator_test.ts feat(testing): add assertRejects, deprecate assertThrowsSync (#1101) 2021-08-09 14:59:52 +09:00
mux_async_iterator.ts feat(async/mux): take AsyncIterable as source iterator (#923) 2021-05-18 22:38:53 +09:00
pool_test.ts chore: updates related to TypeScript 4.4 (#1171) 2021-08-31 14:39:04 +10:00
pool.ts chore: remove Promise<void> return type annotation (#819) 2021-04-05 07:49:05 -04:00
README.md feat(async): add deadline to async module (#1022) 2021-07-12 08:44:57 -04:00
tee_test.ts chore: enable doc type checking (#1050) 2021-07-23 19:09:38 +09:00
tee.ts feat(async): add async/tee (#919) 2021-05-18 22:39:12 +09:00
test.ts update copyright to 2021 (denoland/deno#9081) 2021-02-01 10:46:59 +00:00

async

async is a module to provide help with asynchronous tasks.

Usage

The following functions and class are exposed in mod.ts:

debounce

Debounces a given function by a given time.

import { debounce } from "https://deno.land/std/async/mod.ts";

const p = debounce(
  (value: string) =>
    console.log("Function debounced after 200ms with %s", value),
  200,
);
p("foo");
p("bar");
p("baz");
// wait 200ms ...
// output: Function debounced after 200ms with baz

deferred

Create a Promise with the reject and resolve functions.

import { deferred } from "https://deno.land/std/async/mod.ts";

const p = deferred<number>();
// ...
p.resolve(42);

delay

Resolve a Promise after a given amount of milliseconds.

import { delay } from "https://deno.land/std/async/mod.ts";

// ...
const delayedPromise = delay(100);
const result = await delayedPromise;
// ...

MuxAsyncIterator

The MuxAsyncIterator class multiplexes multiple async iterators into a single stream.

The class makes an assumption that the final result (the value returned and not yielded from the iterator) does not matter. If there is any result, it is discarded.

import { MuxAsyncIterator } from "https://deno.land/std/async/mod.ts";

async function* gen123(): AsyncIterableIterator<number> {
  yield 1;
  yield 2;
  yield 3;
}

async function* gen456(): AsyncIterableIterator<number> {
  yield 4;
  yield 5;
  yield 6;
}

const mux = new MuxAsyncIterator<number>();
mux.add(gen123());
mux.add(gen456());
for await (const value of mux) {
  // ...
}
// ..

pooledMap

Transform values from an (async) iterable into another async iterable. The transforms are done concurrently, with a max concurrency defined by the poolLimit.

import { pooledMap } from "https://deno.land/std/async/mod.ts";

const results = pooledMap(
  2,
  [1, 2, 3],
  (i) => new Promise((r) => setTimeout(() => r(i), 1000)),
);

for await (const value of results) {
  // ...
}

tee

Branches the given async iterable into the n branches.

import { tee } from "https://deno.land/std/async/tee.ts";

const gen = async function* gen() {
  yield 1;
  yield 2;
  yield 3;
};

const [branch1, branch2] = tee(gen());

(async () => {
  for await (const n of branch1) {
    console.log(n); // => 1, 2, 3
  }
})();

(async () => {
  for await (const n of branch2) {
    console.log(n); // => 1, 2, 3
  }
})();

deadline

Create a promise which will be rejected with DeadlineError when a given delay is exceeded.

import { deadline } from "https://deno.land/std/async/mod.ts";

const delayedPromise = delay(1000);
// Below throws `DeadlineError` after 10 ms
const result = await deadline(delayedPromise, 10);