actionchannel中的传入操作顺序不同

时间:2017-07-15 10:25:49

标签: redux-saga

我有一个本机应用程序,我需要简单地保留在应用程序中调度的所有原始操作。我的想法是,我得到一种简单的事件存储,我稍后可以聚合报告和统计信息。 要求是每个操作都持久存储,并且它们按照调度的顺序持久存储

我选择使用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()甚至可以这样工作吗?

1 个答案:

答案 0 :(得分:0)

看起来很简单:track传奇是最后一个获得注册的传奇。在将sagaMiddleware.run(track);移动到第一个之后,事情按预期工作。

然而,除了第一个之外的任何动作的顺序无论如何都会正确地进行。但是我专注于前<〜> 的第一个~5个动作是正确的顺序。