Как я могу передать последнее значение потока в обработчик ошибок?

Допустим, у меня есть следующий синхронный код, который требует оригинальных аргументов при обработке ошибок:

var input = createInput(123);

try {
  doWork(input);
} catch (err) {
  handleError(input, err); // error handling requires input
}

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

Rx.Observable.just(123).map(createInput).map(doWork).subscribe(
  function(result) {
    // success
  }, 
  function(err) {
    // how can I get the argument of doWork (the result of createInput) here?
  }
);

1 ответ

Решение

Просто добавьте его как свойство объекта Error перед тем, как бросить его, или в код обертки, как показано ниже.

...map(function (value) {
    try {
        return createInput(value);
    }
    catch (e) {
        e.lastValue = value;
        throw e;
    }
}).subscribe(..., function (e) {
    e.lastValue...
Другие вопросы по тегам