1
Подумайте, почему мое обещание разрешается, но пытается повторить попытку.Rxjs: повторить обещание?
var getResultsStream = url => Rx.Observable.onErrorResumeNext(
Rx.Observable.defer(() => Rx.Observable
.fromPromise(getSearchResults(url)
.catch(error => Rx.Observable.of(`Error: ${error}`)))
.timeout(20000, new Error(`Timeout: ${url}`))
)
.do(e => console.log(`Retrying: ${url}`))
.retry(3)
)
Это лучший способ повторить обещание 3 раза?
я добавил 'onErrorResumeNext' так Wouldn» t разорвать поток, если произошла ошибка, в этом случае, как бы я сохранил поток в живых, если он провалился 3 раза? –
Зачем вам это нужно? Ничего из этого не может произойти - все попытки используются, но также это один из основных принципов rxjs, что ошибки обрабатываются правильно, этот SO-entry несколько связан: http://stackoverflow.com/questions/41827371/how-do-i-throw-an-error-on-the-behavior-subject-and-continue-the-stream/41828984 # 41828984 – olsn
И последнее, но не менее важное: 'onErrorResumeNext' не будет поддерживать поток в потоке (см. документы здесь: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/onerrorresumenext.md) – olsn