使用fromPromise时如何处理拒绝承诺(rxjs5.5)

使用fromPromise时如何处理拒绝承诺(rxjs5.5),rxjs,rxjs5,redux-observable,Rxjs,Rxjs5,Redux Observable,我在写以下redux observable epic时,找不到处理拒绝承诺的方法。我如何处理getDataFromPromise拒绝?我试过吹管、接球、接球等 (action$, store) => action$ .ofType(request().type) .mergeMap(action => fromPromise(getDataFromPromise(action.payload)).map(data => succe

我在写以下redux observable epic时,找不到处理拒绝承诺的方法。我如何处理
getDataFromPromise
拒绝?我试过吹管、接球、接球等

(action$, store) =>
  action$
    .ofType(request().type)
    .mergeMap(action =>
      fromPromise(getDataFromPromise(action.payload)).map(data =>
        success(data)
      )
    )
下面的内容应该根据示例进行操作,但事实并非如此

(action$, store) =>
   action$.ofType(request().type).mergeMap(action =>
     fromPromise(getDataFromPromise(action.payload))
       .pipe(catchError(error => of(failure(error))))
       .map(data => success(data))
   )

如果您使用的是RXJSV6,那么就没有这样的“fromPromise”可观察的创建。请看这篇文章并由Ben Lesh回答:

相反,您应该使用
“from”
创建可观察对象

此外,我建议快速查看redux observable文档的示例,该示例展示了如何使用“ajax”帮助器使用
catchError
操作符处理promise中的observable错误:


因此,一种更简单的修复代码的方法可能只是遵循这一点,并使用“ajax”包装getDataFromPromise函数。

如果您使用的是RxJS v6,则不存在这种“fromPromise”可观察的创建。请看这篇文章并由Ben Lesh回答:

相反,您应该使用
“from”
创建可观察对象

此外,我建议快速查看redux observable文档的示例,该示例展示了如何使用“ajax”帮助器使用
catchError
操作符处理promise中的observable错误:


因此,一种更简单的修复代码的方法可能就是遵循这一点,使用“ajax”包装getDataFromPromise函数。

您可能需要提供getDataFromPromise的代码,我不确定promise是否拒绝了您可能会认为新的promise((resolve,reject)=>reject())。当promise解决时,没有问题,它可以工作,但我无法理解。您可能需要提供getDataFromPromise的代码,我不确定promise是否拒绝了您可能会认为新的promise((resolve,reject)=>reject())。当promise解决时,没有问题,它可以工作,但是我无法理解它。我使用的是rxjs5.5,所以我不能使用它。关于请求,它不是ajax,而是一些可能会失败的处理。我使用的是rxjs5.5,所以我不能使用它。关于请求,不是ajax,而是一些可能会失败的处理。
import { ajax } from 'rxjs/ajax';

const fetchUserEpic = action$ => action$.pipe(
  ofType(FETCH_USER),
  mergeMap(action => ajax.getJSON(`/api/users/${action.payload}`).pipe(
    map(response => fetchUserFulfilled(response))
    catchError(error => of({
      type: FETCH_USER_REJECTED,
      payload: error.xhr.response,
      error: true
    }))
  ))
);