Skip to main content

Variable: flatMapAsync()

const flatMapAsync: {<From, To>(fn): (asyncIterable) => AsyncIterable<To>; <From, To>(fn, asyncIterable): AsyncIterable<To>; <From, To>(fn): (asyncIterable) => AsyncIterable<To>; <From, To>(fn, asyncIterable): AsyncIterable<To>; }

Defined in: transforms.d.ts:224

Returns an async iterable containing the values of the async iterables returned, or resolving from promises returned, from applying fn to each value of asyncIterable in iteration order.

Like Array.prototype.flatMap, but for async iterables.

Call Signature​

<From, To>(fn): (asyncIterable) => AsyncIterable<To>

Type Parameters​

From​

From

To​

To extends unknown[] | []

Parameters​

fn​

(value) => MaybePromiseLike<AsyncIterable<To, any, any> | Iterable<To, any, any>>

Returns​

(asyncIterable): AsyncIterable<To>

Parameters​

asyncIterable​

AsyncIterable<From>

Returns​

AsyncIterable<To>

Call Signature​

<From, To>(fn, asyncIterable): AsyncIterable<To>

Type Parameters​

From​

From

To​

To extends unknown[] | []

Parameters​

fn​

(value) => MaybePromiseLike<AsyncIterable<To, any, any> | Iterable<To, any, any>>

asyncIterable​

AsyncIterable<From>

Returns​

AsyncIterable<To>

Call Signature​

<From, To>(fn): (asyncIterable) => AsyncIterable<To>

Type Parameters​

From​

From

To​

To

Parameters​

fn​

(value) => MaybePromiseLike<AsyncIterable<To, any, any> | Iterable<To, any, any>>

Returns​

(asyncIterable): AsyncIterable<To>

Parameters​

asyncIterable​

AsyncIterable<From>

Returns​

AsyncIterable<To>

Call Signature​

<From, To>(fn, asyncIterable): AsyncIterable<To>

Type Parameters​

From​

From

To​

To

Parameters​

fn​

(value) => MaybePromiseLike<AsyncIterable<To, any, any> | Iterable<To, any, any>>

asyncIterable​

AsyncIterable<From>

Returns​

AsyncIterable<To>

Example​

import { asAsync, flatMapAsync, map, pipe, reduceAsync, toArray } from 'lfi'

const API_URL = `https://api.dictionaryapi.dev/api/v2/entries/en`

console.log(
await pipe(
asAsync([`sloth`, `lazy`, `sleep`]),
flatMapAsync(async word => {
const response = await fetch(`${API_URL}/${word}`)
const [{ meanings }] = await response.json()
return map(meaning => meaning.partOfSpeech, meanings)
}),
reduceAsync(toArray()),
),
)
//=> [
//=> 'noun',
//=> 'verb',
//=> 'noun',
//=> 'verb',
//=> 'adjective',
//=> 'verb'
//=> ]
Playground

Since​

v0.0.1