暂停rootEpic直到持续完成

时间:2017-03-16 14:12:34

标签: redux rxjs react-redux rxjs5 redux-observable

我在我的应用程序中使用了redux-persist和redux-observable,并注意到在恢复存储状态之前,我的API调用包含在observable中。并且恢复会使用陈旧数据覆盖获取的值。 在缓存时,rootEpic如何暂停,直到持续/ REHYDRATE操作到来?

2 个答案:

答案 0 :(得分:0)

如果您想等到发生“事件”,可以使用(...)。例如:

.skipUntil
const action$ = new Rx.Subject();

// In your epic
action$
  .skipUntil(action$.filter(({ type }) => type === 'hydrated'))
  .subscribe(x => console.log(x));

// "Rehydrate"
action$.next({ type: 'hello!' });
action$.next({ type: 'hello?' });
action$.next({ type: 'any body there?' });
action$.next({ type: 'hydrated' });
action$.next({ type: 'do' });
action$.next({ type: 'you' });
action$.next({ type: 'see' });
action$.next({ type: 'me' });
action$.next({ type: 'now' });

我想,为了不将其添加到你的所有史诗中,你可以<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>你的根史诗或其他东西:)

在以下评论中讨论后

其他中间件也可能出现此问题。因此,在完成补水之前,不要采取任何行动可能是更好的解决方案。

答案 1 :(得分:0)

我不熟悉redux-persist,但是注意到将中间件传递给redux的顺序很重要或者可能不重要。有些中间件需要在其他中间件之前或之后。如果这听起来与您的问题相关,您可以尝试交换它们。