В RxJS, там, кажется, очень мало разницы между catch
методом наблюдаемого экземпляра и onErrorResumeNext
методом, кроме того, что onErrorResumeNext
сцепляются оригинал Observable с наблюдаемыми параметрами происходит ли ошибка или нет.разница между уловом и onErrorResumeNext
Если это так, не означает, что это немного запутанно? Потому что в случае, если есть ошибка, onErrorResumeNext
работает точно так же, чем catch
делает:
var testObservable = Rx.Observable.return(1).concat(Rx.Observable.throw("Error"))
// Both onError and onCatch will emit the same result: 1, 2
var onError = testObservable.onErrorResumeNext(Rx.Observable.return(2));
var onCatch = testObservable.catch(Rx.Observable.return(2));
Есть веская причина не всегда используя catch
?
Название скорее всего происходит из инструкции Visual Basic 'On Error Resume Next', которая имеет семантику, подобную этому оператору. – Brandon
@Brandon Также хороший момент. Я решил не упоминать об этом, хотя, поскольку я решил, что это не было подходящее имя, команда Rx не использовала бы его. И хотя вопрос OP частично связан с семантикой, я решил сосредоточить свой ответ на различиях между операторами, что показывает, что это имя действительно подходит. –
Ваш ответ имеет смысл, спасибо. Я предполагаю, что путаница связана с именованием, потому что, как вы указываете, главная задача 'onErrorResumeNext' заключается в конкатенации, но это совсем не отражается на имени. – GiantSquid