我正在使用redux与redux,并处理流数据我正在使用redux-epics。
像这样:
Stream<dynamic> getDataEpic(Stream<dynamic> actions, EpicStore<AppState> store) {
return Observable(actions)
.ofType(TypeToken<RequestDataAction>())
.flatMap((RequestDataAction action) {
return getDataStream()
.map(
(data) => UpdateStateWithData(data)
);
})
.takeUntil(actions.where((action) => action is CancelGetDataAction));
}
// getDataStream() - is a stream that returns some stuff...
在onInit的我的屏幕中,我调用store.dispatch(RequestDataAction())
和onDispose我调用store.dispatch(CancelGetDataAction())
完全破坏Observable,所以下次我去这个屏幕如果我调用store.dispatch(RequestDataAction())
我的流不发送数据,实际上整个Observable已经死了!
我怎么解决这个问题?据我所知,问题是takeUntil因为我完全关闭了observable ..
尝试在takeUntil
之后将flatMap
移动到getStreamData().map()
。当接收到动作时,这将取消内部可观察者而不是外部可观察者。