У меня есть эпос, который отправляет действие, которое обрабатывается промежуточным программным обеспечением-редуктором, которое возвращает обещание после отправки действия. Эпопея выглядит примерно так:
const myEpic = action$ =>
action$.pipe(
ofType(SAVE_ACTION),
switchMap(action => [
saveData(action.payload)
])
)
Когда отправляется SAVE_ACTION
, он попадает в эпопею, которая отправляет действие, созданное создателем действия saveAction
.
Это результирующее действие перехватывается промежуточным программным обеспечением redux
(в частности, redux-axios-middleware
), которое выполняет HTTP-запрос и преобразует результат отправки такого действия в обещание со стандартным поведением разрешения. когда HTTP-запрос завершается успешно и отклоняется при сбое HTTP-запроса.
Что мне нужно сделать, так это выполнить дополнительную работу после того, как обещание будет выполнено, в рамках этого эпоса, потому что мне нужны данные, содержащиеся как в полезной нагрузке начального действия SAVE_ACTION
, так и в полезной нагрузке ответа HTTP.
Поскольку промежуточное программное обеспечение также отправляет действия после завершения основного HTTP-запроса, было бы легко написать дополнительную эпопею для выполнения дополнительной работы, которую мне нужно выполнить в отдельной эпопее, но у меня не было бы доступа к полезной нагрузке. из первоначального SAVE_ACTION
больше, поэтому я пытаюсь выяснить, можно ли все это обработать в рамках одного эпоса, и я до сих пор не нашел выхода. Я нашел в Интернете посты, такие как , этот , который очень информативен, но все еще не решает проблему ожидания действия, а не просто заметен.