Redux-Observable-仅在另一个史诗“完成”之后才运行史诗

时间:2018-08-27 13:48:00

标签: rxjs redux-observable

我正在尝试将两个异步史诗在redux-observable中串在一起。这两个史诗中的每一个都会在超时后分派多个动作,如下所示:

epicOne

const epicOne = action$ => {
  return action$.pipe(
    mergeMap( action => {

      // wait for a promise
      const timeout = new Promise( resolve => {
        setTimeout( () => { resolve( true ) }, 1000 );
      } );

      // dispatch multiple actions
      return from( timeout ).pipe(
        mergeMap( () => {
          return [
            someActionA(),
            someActionB()
          ];
        } )
      );
    } )
  );
}

epicTwo

const epicTwo = action$ => {
  return action$.pipe(
    mergeMap( action => {

      // wait for a promise
      const timeout = new Promise( resolve => {
        setTimeout( () => { resolve( true ) }, 500 );
      } );

      // dispatch multiple actions
      return from( timeout ).pipe(
        mergeMap( () => {
          return [
            someActionC(),
            someActionD()
          ];
        } )
      );
    } )
  );
}

现在,当我尝试通过如下所示的epicCombine依次 调用这两个史诗时,我很难将它们结合

epicCombine

const epicCombine = action$ => {
  return action$.pipe(
    concatMap( action => {
      return [
        epicOneAction(),
        epicTwoAction()
      ];
    } )
  );
}

由于epicTwo的超时时间较短,似乎这是被称为操作的顺序:

  1. epicCombineAction
  2. epicOneAction
  3. epicTwoAction
  4. someActionC
  5. someActionD
  6. someActionA
  7. someActionB

在{em> epicTwo完成后(包括epicOnesomeActionA之后,someActionB是否可以称为

我一直在努力将如何将concat运算符构造为代码,但无济于事。非常感谢任何人的帮助!

0 个答案:

没有答案