reduce

Invoke an async reducer function on each item in the given Array, where the reducer transforms an accumulator value based on each item iterated over. Note: because reduce() is order-sensitive, iteration is sequential.

This is an asynchronous version of Array.prototype.reduce()

reduce(array: Array, reducer: Function, accumulator: [Any]): any
Parameters
array (Array) The Array to reduce
reducer (Function) Async function, gets passed (accumulator, value, index, array) and returns a new value for accumulator
accumulator ([Any]) Optional initial accumulator value
Returns
any: final accumulator value
Example
await reduce(
	['/foo', '/bar', '/baz'],
	async (accumulator, value) => {
		accumulator[v] = await fetch(value);
		return accumulator;
	},
	{}
);

map

Invoke an async transform function on each item in the given Array in parallel, returning the resulting Array of mapped/transformed items.

This is an asynchronous, parallelized version of Array.prototype.map().

map(array: Array, mapper: Function): Array
Parameters
array (Array) The Array to map over
mapper (Function) Async function, gets passed (value, index, array) , returns the new value.
Returns
Array: resulting mapped/transformed values.
Example
await map(
	['foo', 'baz'],
	async v => await fetch(v)
)

filter

Invoke an async filter function on each item in the given Array in parallel, returning an Array of values for which the filter function returned a truthy value.

This is an asynchronous, parallelized version of Array.prototype.filter().

filter(array: Array, filterer: Function): Array
Parameters
array (Array) The Array to filter
filterer (Function) Async function. Gets passed (value, index, array) , returns true to keep the value in the resulting filtered Array.
Returns
Array: resulting filtered values
Example
await filter(
	['foo', 'baz'],
	async v => (await fetch(v)).ok
)

parallel

Invoke all async functions in an Array or Object in parallel, returning the result.

parallel(list: (Array<Function> | Object<Function>)): (Array | Object)
Parameters
list ((Array<Function> | Object<Function>)) Array/Object with values that are async functions to invoke.
Returns
(Array | Object): same structure as list input, but with values now resolved.
Example
await parallel([
	async () => await fetch('foo'),
	async () => await fetch('baz')
])

series

Invoke all async functions in an Array or Object sequentially, returning the result.

series(list: (Array<Function> | Object<Function>)): (Array | Object)
Parameters
list ((Array<Function> | Object<Function>)) Array/Object with values that are async functions to invoke.
Returns
(Array | Object): same structure as list input, but with values now resolved.
Example
await series([
	async () => await fetch('foo'),
	async () => await fetch('baz')
])