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