Yurii Kuchevskyi
Yurii Kuchevskyi

Reputation: 21

Redux observable epic takes few actions in a row but return only last

I have an epic which should proceed few actions of type VERIFY_INSURANCE_REQUEST in a row. Everything works good inside switchMap block (all items are proceeded as well) but only last one goes to map block, so I have only one successfully dispatched action instead of many.

function verifyInsuranceEpic(action$) {
return action$.pipe(
    ofType(types.VERIFY_INSURANCE_REQUEST),
    switchMap((action) => {
        const { verifyInsuranceModel } = action;
        const promise = InsuranceApi.verifyInsurance(verifyInsuranceModel).then(result => {
            const returnResult = result && result.rejectReason === null;
            const actionResponse = {
                returnResult,
                key: verifyInsuranceModel.key
            }
            return actionResponse;
        })
        return from(promise); 
    }),
    map(result => {
        return verifyInsuranceSuccess(result)
    }),
    catchError(error => of(verifyInsuranceFailure(error)))
); 

}

Is there any way to make all responses go to map block?

Upvotes: 0

Views: 302

Answers (1)

Yurii Kuchevskyi
Yurii Kuchevskyi

Reputation: 21

As mentioned in comments, the solution is just change switchMap to concatMap.

Upvotes: 1

Related Questions