动作通道中传入动作的顺序不同
Order of incoming actions in actionchannel differs
我有一个 React 本机应用程序,我需要简单地保留应用程序中调度的所有原始操作。我的想法是我得到一种简单的事件存储,稍后我可以在上面聚合报告和统计数据。
一个要求是每个动作都按原样持久化,并且它们按照它们被调度的顺序持久化。
我选择了使用 actionChannel
效果的简单案例:
import { actionChannel, call, take } from 'redux-saga/effects'
export function* track() {
const catchAll = yield actionChannel('*');
while (true) {
const action = yield take(catchAll);
yield call(persist, action);
}
}
这会保留所有操作,但不会按照它们的调度顺序。但是,使用 Redux DevTools,我看到报告的顺序正确。
我在这里遗漏了什么明显的东西吗?
我怎样才能保证得到正确的订单?
actionChannel()
甚至那样工作吗?
看起来很简单:track
saga 是最后一个注册的。将 sagaMiddleware.run(track);
移动到第一个后,一切都按预期进行。
但是,无论如何,除了第一个动作之外的任何动作的顺序都是正确的。但我专注于前 ~5 个动作 而不是 顺序正确。
我有一个 React 本机应用程序,我需要简单地保留应用程序中调度的所有原始操作。我的想法是我得到一种简单的事件存储,稍后我可以在上面聚合报告和统计数据。 一个要求是每个动作都按原样持久化,并且它们按照它们被调度的顺序持久化。
我选择了使用 actionChannel
效果的简单案例:
import { actionChannel, call, take } from 'redux-saga/effects'
export function* track() {
const catchAll = yield actionChannel('*');
while (true) {
const action = yield take(catchAll);
yield call(persist, action);
}
}
这会保留所有操作,但不会按照它们的调度顺序。但是,使用 Redux DevTools,我看到报告的顺序正确。
我在这里遗漏了什么明显的东西吗?
我怎样才能保证得到正确的订单?
actionChannel()
甚至那样工作吗?
看起来很简单:track
saga 是最后一个注册的。将 sagaMiddleware.run(track);
移动到第一个后,一切都按预期进行。
但是,无论如何,除了第一个动作之外的任何动作的顺序都是正确的。但我专注于前 ~5 个动作 而不是 顺序正确。