на создание сущности, ловит ответ и, например, добавляет в стор, если запрос выполнен успешно.
@Effect()
create$ = this.actions$.pipe(
ofType('CREATE'),
switchMap(action => this.entityService.create(action.payload).pipe(
map(result => ({type: 'CREATE_SUCCESS', payload: result})),
catchError(() => of({type: 'CREATE_ERROR'}),
)),
);
Что будет, если во время выполнения одного запроса нам прилетит ещё один экшн типа CREATE?
switchMap отпишется от внутреннего обс (this.entityService.create()) и начнёт выполнять новый запрос.
Следовательно, до эмита success/error дело уже не дойдёт и хоть на бэке логика и отработает, вероятно, на фронте мы этого не узнаем.
Чтобы такого не было, нужно использовать либо concatMap, если порядок выполнения запросов не важен, либо mergeMap, если важен.
согласен. если write то concatMap/flatMap. если read, в основном switchMap
Обсуждают сегодня