这是我的代码:

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/

10-12 12:46
查看更多