可以确定史诗何时在 Redux Observable 中完成?

瓦茨拉夫·泽曼

我是 RxJS 的新手,如果它没有多大意义,我很抱歉。

假设我想要一个可重用的史诗,用于从应用加载史诗中获取将被操作调用的用户。

过于简化的例子:

const getUserEpic = action$ =>
  action$.pipe(
    ofType(GET_USER_REQUEST),
    switchMap(action => from(service.fetchUser(action.userId).pipe(
     mapTo({ type: GET_USER_SUCCESS })))
    ),
  );

const appLoadEpic = action$ => 
 action$.pipe(
    ofType(LOAD_APP_REQUEST),
    map(() => of({ type: GET_USER_REQUEST }, { type: SOME_OTHER_REQUEST }))
  );

如果我想LOAD_APP_SUCCESS在所有调用的史诗(getUser 等)完成后调用怎么办?如果它可以在 appLoadEpic 中完成,那就太好了,但恐怕这是不可能的。

保罗·丹尼尔斯

我建议这样做的方式是将各个史诗组合成一个“元”史诗。也就是说,您可以使用各个流来侦听它们的各个事件,并在所有合并的流完成后传播它们。

const getUserEpic = action$ => ... 
const someOtherEpic = action$ => ...
// Creates an epic that merges all the results from each provided epic
const initializationEpic = combineEpics(getUserEpic, someOtherEpic)

const appLoadEpic = (action$, state$) => {
  // Runs the new epic with the action and state values.
  const onLoad$ = initializationEpic(action$, state$).pipe(
    endWith({type: LOAD_APP_SUCCESS})
  )

  // Listen for the load app request before subscribing to the initialization
  action$.pipe(
    ofType(LOAD_APP_REQUEST),
    mergeMapTo(onLoad$),
  )
}

如果你觉得很花哨并且不想通过导入注入史诗,你也可以动态注入史诗文档详细介绍了异步注入史诗的方法,这意味着你可以将它作为文件注入的一部分而不是文件注入启动期间的动作主体,这可能会使测试更容易一些。

  const appLoadEpic = (action$, state$) => {
    // Listen for the load app request before subscribing to the initialization
    action$.pipe(
      ofType(LOAD_APP_REQUEST),
      // Now the epic is injected during the app loading, and you run it inline 
      // here. This makes it easy to mock it during testing
      mergeMap(({epic}) => epic(action$, state$).pipe(endWith({type: LOAD_APP_SUCCESS}))),
    )
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Redux-observable:在一些数据获取史诗完成后调用辅助函数

来自分类Dev

如何在史诗 redux-observable 的 componentDidMount 方法中设置状态数据

来自分类Dev

为什么我的redux-observable史诗没有被触发?

来自分类Dev

如何使用TypeScript键入Redux-Observable的史诗动作

来自分类Dev

Redux-Observable 单个史诗中的多个动作

来自分类Dev

如何在 redux observable 史诗中为 ajax 响应发出两个动作

来自分类Dev

如何在 redux-observable 中处理异步函数?

来自分类Dev

如何在RxJS中完成Observable

来自分类Dev

使用 Redux-Observable 在 React-Redux-Firebase 应用程序中实现自动保存

来自分类Dev

如何创建一个 redux-observable 史诗,在做任何事情之前等待 2 个动作

来自分类Dev

redux-observable 调度动作

来自分类Dev

如何确定node.js中的复制过程何时完成?

来自分类Dev

我们可以将 redux-batch-middleware 与 redux-observable 一起使用吗?

来自分类Dev

React Redux道具验证中缺少的内容以及使用redux-observable从外部API初始化容器的推荐模式

来自分类Dev

Redux Observable、React、componentDidMount 从 API 中获取无法从对象中获取属性

来自分类Dev

有什么替代方法可以使用直到redux-observable和RxJS

来自分类Dev

如何正确排序和响应RxJS和redux-observable中的动作?

来自分类Dev

如何在redux-observable中重新初始化动作?

来自分类Dev

如何在redux-observable中同时进行多个ajax调用?

来自分类Dev

类型错误:无法读取 Redux-Observable 中未定义的属性“管道”

来自分类Dev

估计何时在Excel中完成

来自分类Dev

过滤 observable 直到映射的 observable 完成

来自分类Dev

使用fetch代替redux-observable的ajax

来自分类Dev

Angular Observable首先需要完成

来自分类Dev

等待所有 Observable 完成

来自分类Dev

netty如何确定读取何时完成?

来自分类Dev

JMeter。如何确定线程组何时完成

来自分类Dev

如何确定Vue何时完成DOM更新?

来自分类Dev

我能否确定组件对redux-saga的调用何时结束?

Related 相关文章

  1. 1

    Redux-observable:在一些数据获取史诗完成后调用辅助函数

  2. 2

    如何在史诗 redux-observable 的 componentDidMount 方法中设置状态数据

  3. 3

    为什么我的redux-observable史诗没有被触发?

  4. 4

    如何使用TypeScript键入Redux-Observable的史诗动作

  5. 5

    Redux-Observable 单个史诗中的多个动作

  6. 6

    如何在 redux observable 史诗中为 ajax 响应发出两个动作

  7. 7

    如何在 redux-observable 中处理异步函数?

  8. 8

    如何在RxJS中完成Observable

  9. 9

    使用 Redux-Observable 在 React-Redux-Firebase 应用程序中实现自动保存

  10. 10

    如何创建一个 redux-observable 史诗,在做任何事情之前等待 2 个动作

  11. 11

    redux-observable 调度动作

  12. 12

    如何确定node.js中的复制过程何时完成?

  13. 13

    我们可以将 redux-batch-middleware 与 redux-observable 一起使用吗?

  14. 14

    React Redux道具验证中缺少的内容以及使用redux-observable从外部API初始化容器的推荐模式

  15. 15

    Redux Observable、React、componentDidMount 从 API 中获取无法从对象中获取属性

  16. 16

    有什么替代方法可以使用直到redux-observable和RxJS

  17. 17

    如何正确排序和响应RxJS和redux-observable中的动作?

  18. 18

    如何在redux-observable中重新初始化动作?

  19. 19

    如何在redux-observable中同时进行多个ajax调用?

  20. 20

    类型错误:无法读取 Redux-Observable 中未定义的属性“管道”

  21. 21

    估计何时在Excel中完成

  22. 22

    过滤 observable 直到映射的 observable 完成

  23. 23

    使用fetch代替redux-observable的ajax

  24. 24

    Angular Observable首先需要完成

  25. 25

    等待所有 Observable 完成

  26. 26

    netty如何确定读取何时完成?

  27. 27

    JMeter。如何确定线程组何时完成

  28. 28

    如何确定Vue何时完成DOM更新?

  29. 29

    我能否确定组件对redux-saga的调用何时结束?

热门标签

归档