У меня есть эффект, основная идея которого состоит в том, чтобы сделать несколько «волшебников» c с API, основная проблема: сначала мне нужно сделать один запрос, после того, как он успешен, мне нужно сделать второй запрос. И все было в порядке, пока я не изменил свой код на этот (чтобы он выглядел более читабельным):
@Effect()
myEffect$ = this.actions$.pipe(
ofType(actionTypes.SomeDataAction),
withLatestFrom(this.store.select(selectTheAwesome)),
concatMap(([action, awesomeData]) =>
forkJoin([
of(awesomeData),
this.myService.makeFirstMagic(
action.payload.someDataId
)
])
),
concatMap(data => {
const [awesomeData, magicFirst] = data;
return this.myService.makeSecondMagic(awesomeData.awesomeDataId, magicFirst.newId).pipe(
mergeMap(response => {
return [new SomeDataActionSuccess(), new SomeAnotherDataAction([response])];
})
);
}),
catchError((error) => of(new SomeDataActionError({ error })))
);
, но в результате ts-lint завершается с RxJS: Unsafe catch usage in effects and epics is forbidden
. Что я делаю не так? Почему раньше работал (проходите линтинг) с таким кодом?
@Effect()
myEffect$ = this.actions$.pipe(
ofType(actionTypes.SomeDataAction),
withLatestFrom(this.store.select(selectTheAwesome)),
mergeMap(([action, awesomeData]) => {
return this.myService.makeFirstMagic(action.payload.someDataId).pipe(
mergeMap(magicFirst => {
return this.myService.makeSecondMagic(awesomeData.awesomeDataId, magicFirst.newId).pipe(
mergeMap(response => {
return [new SomeDataActionSuccess(), new SomeAnotherDataAction([response])];
})
);
})
);
}),
catchError(error => of(new SomeDataActionError({ error })))
);