2020-09-25 19:15:18 -04:00
|
|
|
# async
|
|
|
|
|
|
|
|
async is a module to provide help with aysncronous tasks.
|
|
|
|
|
|
|
|
# usage
|
|
|
|
|
|
|
|
The following functions and class are exposed in `mod.ts`
|
|
|
|
|
|
|
|
## deferred
|
|
|
|
|
|
|
|
Creates a Promise with the `reject` and `resolve` functions.
|
|
|
|
|
|
|
|
```typescript
|
2020-09-26 10:14:56 -04:00
|
|
|
import { deferred } from "https://deno.land/std/async/mod.ts";
|
2020-09-25 19:15:18 -04:00
|
|
|
|
|
|
|
const p = deferred<number>();
|
|
|
|
// ...
|
|
|
|
p.resolve(42);
|
|
|
|
```
|
|
|
|
|
|
|
|
## delay
|
|
|
|
|
|
|
|
Resolve a Promise after a given amount of milliseconds
|
|
|
|
|
|
|
|
```typescript
|
2020-09-26 10:14:56 -04:00
|
|
|
import { delay } from "https://deno.land/std/async/mod.ts";
|
2020-09-25 19:15:18 -04:00
|
|
|
|
|
|
|
// ...
|
|
|
|
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.
|
|
|
|
|
|
|
|
```typescript
|
2020-09-26 10:14:56 -04:00
|
|
|
import { MuxAsyncIterator } from "https://deno.land/std/async/mod.ts";
|
2020-09-25 19:15:18 -04:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
```typescript
|
2020-09-26 10:14:56 -04:00
|
|
|
import { pooledMap } from "https://deno.land/std/async/mod.ts";
|
2020-09-25 19:15:18 -04:00
|
|
|
|
|
|
|
const results = pooledMap(
|
|
|
|
2,
|
|
|
|
[1, 2, 3],
|
|
|
|
(i) => new Promise((r) => setTimeout(() => r(i), 1000)),
|
|
|
|
);
|
|
|
|
|
|
|
|
for await (const value of results) {
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
```
|