Идиоматичный способ восстановления из потока onError

Отказ от ответственности: это продолжение предыдущегоБезопасное обновление для 2 зависимых потоков вопрос

Чтоидиоматический способ обработки ошибок в RxJS (или любой другой реализации RX), который позволяет потоку не завершаться?

Соответствующий код

function convert(unit, value) {
    var request = {};
    request[unit] = value;

    var conversion = $.ajax({
        method: 'POST',
        url: './convert.php',
        data: request,
        dataType: 'json'
    }).promise();

    return Rx.Observable.fromPromise(conversion).takeUntil(inInput.merge(cmInput));
}

var cmElement = document.getElementById('cm'),
    inElement = document.getElementById('in');

var cmInput = Rx.Observable.fromEvent(cmElement, 'input').map(targetValue),
    inInput = Rx.Observable.fromEvent(inElement, 'input').map(targetValue);

var inches = cmInput
    .flatMap(convert.bind(null, 'cm'))
    .startWith(0);

var centimeters = inInput
    .flatMap(convert.bind(null, 'in'))
    .startWith(0);

Итак, как вы можете видеть, мы используем поток изменений поля ввода и пропускаем его черезconvert функция, которая преобразует его в другую единицу и передает результат дальше.

Если ошибка во время$.ajax() вызов происходит, то он распространяется и весьinches или жеcetimeters поток останавливается (это на самом деле ожидается).

Но как мне это реализовать, чтобы не делать этого?

Чтобы я мог корректно обработать ошибку, например, показать сообщение об ошибке и повторить попытку при получении новых данных?

Моя текущая идея состоит в том, чтобы ввести составной тип как у HaskellData.Either и поток вместо скалярных двойников.

Мысли?

UPDДа, я прочиталОбработка исключений в реактивных расширениях без остановки последовательности но я все еще надеюсь, что есть лучшие способы.

Ответы на вопрос(2)

Ваш ответ на вопрос