mux

A simple and convenient function that resolves promises in data structures like arrays, objects, Maps, and Sets
What is mux?
Mux is a function that multiplexes promises in nested data structures and resolves them like this:
await mux({
a: asyncFunction1(),
b: asyncFunction2(),
});
{
a: result1,
b: result2,
}
Installing mux
yarn add @expo/mux
And import it like this:
import mux from '@expo/mux';
More examples
You can also pass in deeply nested data structures like this:
await mux({
a: {
b: asyncFunction1(),
},
});
{
a: {
b: result1,
},
}
Mux supports several standard JavaScript data structures:
await mux(new Set([
asyncFunction1(),
asyncFunction2(),
]));
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(),
}),
]);
[
{
a: result1,
},
]
Check out the test suite for even more examples.
Interesting use cases
If you've discovered a particularly interesting way to use mux, add it here and send a PR to share it.