我正在使用带有redux的flutter,并使用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,因为我完全关闭了可观察对象。
答案 0 :(得分:0)
尝试将takeUntil
移到flatMap
之后。收到动作后,这将取消内部的可观察的,而不是外部的可观察的。