这是我的代码:
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/