0

我正在使用带有 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 ..

4

1 回答 1

0

尝试将takeUntil移入. 当接收到动作时,这将取消内部 observable 而不是外部 observable。flatMapgetStreamData().map()

于 2019-04-25T07:41:58.343 回答