动作通道中传入动作的顺序不同

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 个动作 而不是 顺序正确。