有没有一种更干净的方法来组织合并中的多个RXJS观测值?

有没有一种更干净的方法来组织合并中的多个RXJS观测值?,rxjs,redux-observable,Rxjs,Redux Observable,下面的史诗按照预期工作。在进行api调用之前,它在merge操作符中调用多个操作。然而,我只是想知道有没有一种更干净的方法来调用重置操作,而不是像我一样列出单独的观察值。是否可以在数组中列出它们?还是其他方式 const imageUploadEpic = (action$, state$) => action$.pipe( ofType('UPLOAD_IMAGE'), mergeMap(action => concat( merge

下面的史诗按照预期工作。在进行api调用之前,它在merge操作符中调用多个操作。然而,我只是想知道有没有一种更干净的方法来调用重置操作,而不是像我一样列出单独的观察值。是否可以在数组中列出它们?还是其他方式

const imageUploadEpic = (action$, state$) =>
  action$.pipe(
    ofType('UPLOAD_IMAGE'),
    mergeMap(action =>
      concat(
        merge(
          of({ type: 'RESET_IMAGE' }),
          of({ type: 'RESET_COLOURS' }),
          of({ type: 'RESET_LOCALISER' })
        ),
        from(
          axios.post(`/uploads/url`, {
            url: action.src
          })
        ).pipe(
          map(response => ({
            type: 'UPLOAD_IMAGE_SUCCESS',
            data: response.data,
          })),
          catchError(error =>
            of({
              type: 'UPLOAD_IMAGE_ERROR',
              error
            })
          )
        )
      )
    )
  ); 

您可以利用以下事实:接受
可观测输入
参数,并且数组是
可观测输入

const imageUploadEpic=(操作$,状态$)=>
动作$.pipe(
ofType('UPLOAD_IMAGE'),
合并映射(操作=>
海螺(
[
{type:'RESET_IMAGE'},
{键入:“重置颜色”},
{type:'RESET_LOCALISER'}
],
from(axios.post(`/uploads/url`,{url:action.src})).pipe(
映射(响应=>({
键入:“上传图像成功”,
数据:response.data,
})),
catchError(错误=>
的({
类型:“上载图像错误”,
错误
})
)
)
)
)
);

答案是正确的,但是您应该使用
concat
而不是
merge
-
concat
保证保持秩序。(OP也使用
concat