RxJS library which is analog of Promise.allSettled() method.
Mostly I use forkJoin
when I need to make an parallel requests. But it throws an error if any given observable throws an error at some point. In rare cases I want to get some partial results from requests (at least results that were completed successfully). Unfortunatly, it's imposible with forkJoin
.
There is a solution in native JS - Promise.allSettled()
static method. But I like RxJS and don't want to use Promises in my, for example Angular
projects. That's how idea of this library was born.
Wait for Observables to complete and then emit (and complete) an array of objects that describe the outcome of each observable; complete immediately if an empty array is passed.
Where R
is an array of objects that describe the outcome of each observable (in the same order they were passed); each object has following properties:
- status - string, either "fulfilled" or "rejected", indicating the eventual state of the observable;
- value - only present if status is "fulfilled"; the value that the observable was completed with;
- reason - only present if status is "rejected"; the error that the observable was completed with.
Difference from forkJoin
As I said before forkJoin
operator will completed with error if any of given observables throws an error. forkJoin Settled
will never completed with error. It maps an error to object with "rejected" status. Value from observable it maps to object with "fulfilled" status.
- Install the library:
npm i fork-join-settled
- Import to your file:
import { forkJoinSettled } from 'fork-join-settled';
- Use wherever you need:
forkJoinSettled([...])
You can look up in test file ./src/fork-join-settled.spec.ts
to see how to use operator.
- sources - an array of observables.
If you have any suggestions, ideas, or problems, feel free to create an issue or PR.