angular - 如何将 retryWhen 与返回 bool 值的函数一起使用?

标签 angular rxjs rxjs5 angular2-observables

这是我的代码:

this._http.post(this._url_get + extension, '', { headers: headers })
    .map(res => res['_body'])
    .retryWhen(errors => {return responseErrorProcess(errors)})

现在我需要捕获异常并将它们传递给我的 responseErrorProcess()返回 true如果需要重试

我不知道如何从 errors 中检索异常,这是它的外观:
Subject_isScalar: falseclosed: falsehasError: falseisStopped: falseobservers: Array[0]thrownError: null__proto__: Observable`

它似乎不包含有关发生的异常的错误,而且我不知道应该返回什么才能真正重试。

最佳答案

retryWhen应该返回一个 Observable。一旦该 observable 发出,就会发生重试:

.retryWhen(errors => 
    //switchMap to retrieve the source error
    errors.switchMap(sourceErr => 
        //send source to processor
        responseErrorsProcess(sourceErr) ? 
        //if result is TRUE, emit (will cause retry). Else, pass on the error
        Observable.of(true): Observable.throw(sourceErr)
    )
)

如果您想在处理器返回时完成而不是出错 false , 替换 Observable.throw()Observable.empty()

关于angular - 如何将 retryWhen 与返回 bool 值的函数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40184509/

相关文章:

angular - 如何使用 Rx 在 Angular 2 中实现可拖动的 div

javascript - 如何在 Angular 组件之间调用动态函数

javascript - 使用 RxJS 在 cycle.js 中进行条件渲染

javascript - 如何监听 Angular 模板驱动的表单变化

javascript - 如何创建一个可以在单项和批处理模式之间切换的 Rx (RxJS) 流?

javascript - 为什么 retryWhen 算子不重新订阅流呢?

rxjs - 从 Promise 接收并重试

rxjs5 - RXJS 观察者重试不是函数

javascript - 处理 Angular 2+ 中子组件中通过引用传递的对象

javascript - 单击(单击)时 Angular 6 更改最近的图标