在单史诗终极版观察的多个动作(Redux-Observable multiple actions i

2019-11-04 14:40发布

我是新来的这一点,有几个类似的问题,如终极版可观察-派遣在一个史诗般的多Redux的行动 ,但我看不出他们是如何应用到我的用例。

我使用的是符合发射基础上处理文件,并上传到服务器上有多个事件

export function UploadSceneWithFile(scene){

  const subject$ = new Subject()

  FileToScenePreview(scene,scene.file).then(res => subject$.next(res))

  const uploader = new S3Upload({
   ....
    onError:()=>subject$.next('error'),
    onProgress: (val)=> subject$.next(val),
    onFinishS3Put: ()=>subject$.next('complete'),
  })
  uploader.uploadFile(scene.file)

  return subject$
}

一要编写捕获基于回来的数据,这些事件和调度动作史诗。

即。 这样的事情

export function uploadSceneFile(action$) {
  return action$.ofType(CREATE_SCENE_SUCCESS)
    .mergeMap(({payload}) =>
      UploadSceneWithFile(payload)
        .subscribe(res => {
            console.log(res)
          if (!res.thumbName) {
            return { type: UPLOAD_SCENE_FAILED, message: 'failed' }
          } else {
            return {type: UPLOAD_SCENE_SUCCESS, payload:  res }
          }
        if (!res.value) {
            return { type: UPLOAD_SCENE_THUMB_FAILED, message: 'failed' }
          } else {
            return {type: UPLOAD_SCENE_THUMB_SUCCESS, payload:  res }
          }
        })
    )
}

我得到这个错误:

类型错误:您提供的其中一个流预期的无效对象。 你可以提供一个观察的,无极,阵列,或可迭代。

我可以安慰记录结果还算可以,但我不会派遣任何行动..任何想法我怎么去呢?

Answer 1:

发生了什么事是,你回你的内部认购mergeMap ,而不是一个可观察,它预计。 而不是使用的subscribe ,它看起来像你想使用map

export function uploadSceneFile(action$) {
  return action$.ofType(CREATE_SCENE_SUCCESS)
    .mergeMap(({payload}) =>
      UploadSceneWithFile(payload)
        .map(res => { // <------------------ map, not subscribe
            console.log(res)
          if (!res.thumbName) {
            return { type: UPLOAD_SCENE_FAILED, message: 'failed' }
          } else {
            return {type: UPLOAD_SCENE_SUCCESS, payload:  res }
          }
        if (!res.value) {
            return { type: UPLOAD_SCENE_THUMB_FAILED, message: 'failed' }
          } else {
            return {type: UPLOAD_SCENE_THUMB_SUCCESS, payload:  res }
          }
        })
    )
}

在终极版,可观察到的,你几乎不会打电话subscribe自己,而不是创作观测量。 你会使用它唯一的一次,主要是与运营商定制是不是超级常见。



文章来源: Redux-Observable multiple actions in single epic