在 redux 中排序 epics
sequencing epics in redux
我有两个 epics,epicA 和 epicB。
B 受制于 back-pressure,因为与其关联的 api 调用较慢。 (上传)
但是,我需要确保来自 B 的所有 api 请求在 A 之前完成。
所以如果请求是
B1....A1....B2...B3...
如果 B2 触发时 B1 尚未完成,则解决方案应为
B1, B2, B3, A1
如果 B1 在 B2 被触发之前完成,分辨率应该是
B1, A1, B2, B3
我一开始以为
const bigEpic = epicA.concat(epicB)
会是一个答案,但我认为这没有意义
另一个想法:
const bigEpic = action$ => epicA(action$).concat(epicB(action$))
您可以使用 Observable.merge
来排序操作。
const fetchFirst = () =>
(action, store) => Observable.ajax('/first');
const fetchSecond = () =>
(action, store) => Observable.ajax('/second');
const fetchBoth = () =>
(action, store) =>
Observable.merge(
fetchFirst()(action, store),
fetchSecond()(action, store),
)
我有两个 epics,epicA 和 epicB。
B 受制于 back-pressure,因为与其关联的 api 调用较慢。 (上传)
但是,我需要确保来自 B 的所有 api 请求在 A 之前完成。
所以如果请求是
B1....A1....B2...B3...
如果 B2 触发时 B1 尚未完成,则解决方案应为
B1, B2, B3, A1
如果 B1 在 B2 被触发之前完成,分辨率应该是
B1, A1, B2, B3
我一开始以为
const bigEpic = epicA.concat(epicB)
会是一个答案,但我认为这没有意义
另一个想法:
const bigEpic = action$ => epicA(action$).concat(epicB(action$))
您可以使用 Observable.merge
来排序操作。
const fetchFirst = () =>
(action, store) => Observable.ajax('/first');
const fetchSecond = () =>
(action, store) => Observable.ajax('/second');
const fetchBoth = () =>
(action, store) =>
Observable.merge(
fetchFirst()(action, store),
fetchSecond()(action, store),
)