Flutter redux epics - takeUntil 操作使流不可用
Flutter redux epics - takeUntil action make stream unusable
我正在使用 flutter 和 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())
我的stream 没有发送数据,实际上整个 Observable 都死了!
我该如何解决这个问题?据我所知,问题是 takeUntil 因为我完全关闭了 observable..
尝试将 takeUntil
移动到 flatMap
紧跟在 getStreamData().map()
之后。当接收到动作时,这将取消内部 observable 而不是外部 observable。
我正在使用 flutter 和 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())
我的stream 没有发送数据,实际上整个 Observable 都死了!
我该如何解决这个问题?据我所知,问题是 takeUntil 因为我完全关闭了 observable..
尝试将 takeUntil
移动到 flatMap
紧跟在 getStreamData().map()
之后。当接收到动作时,这将取消内部 observable 而不是外部 observable。