代码之家  ›  专栏  ›  技术社区  ›  Rahul Shakya

有没有办法从redux observable的管道发送多个动作?

  •  0
  • Rahul Shakya  · 技术社区  · 4 年前

    现在我只想做以前的事我的API.postUserData(有效载荷);我想调用PROFILE_FETCHING_DATA_LOADING以显示ActivityIndicator,但无法执行此操作。

    const profileFetchingDataEpic = (action$) =>
      action$.pipe(
        ofType(PROFILE_FETCHING_DATA_ATTEMPT),
        flatMap((action) => {
          myAPI.postUserData(action.payload);
          return [action];
        }),
        map((action) => {
          console.log("EPIC profileFetchingDataEpic", action);
          return {
            type: PROFILE_FETCHING_DATA_SUCCESS,
            payload: action.payload,
          };
        })
      );
    

    有什么想法吗

    0 回复  |  直到 4 年前
        1
  •  0
  •   Jonathan Stellwag    4 年前

    我不能百分之百确定我是否理解你的意思。如果希望由一个可观察发射创建多个发射,可以:

    1. 将多个值映射到数组
    2. 把它们合并成一个发射点

    const { Observable } = rxjs;
    const { mapTo, mergeAll } = rxjs.operators;
    
    const source$ = new Observable(sub => sub.next(void 0)).pipe(
      mapTo(['one', 'two']),
      mergeAll()
    )
    
    source$.subscribe(v => console.log('source$', v))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>

    这个 mapTo map((action) => ... . 在这里,您需要创建在特定操作传入后要发出的所有操作。