A simple and convenient function that resolves promises in data structures like arrays, objects, Maps, and Sets
Mux is a function that multiplexes promises in nested data structures and resolves them like this:
await mux({
a: asyncFunction1(),
b: asyncFunction2(),
});
// Result:
{
a: result1,
b: result2,
}
yarn add @exponent/mux
And import it like this:
import mux from '@exponent/mux';
You can also pass in deeply nested data structures like this:
await mux({
a: {
b: asyncFunction1(),
},
});
// Result:
{
a: {
b: result1,
},
}
Mux supports several standard JavaScript data structures:
await mux(new Set([
asyncFunction1(),
asyncFunction2(),
]));
// Result:
new Set([
result1,
result2,
])
And if your promises themselves result in data structures, mux will recurse into them and resolve the nested promises.
await mux([
Promise.resolve({
a: asyncFunction1(),
}),
]);
// Result:
[
{
a: result1,
},
]
Check out the test suite for even more examples.