Как я могу передать последнее значение потока в обработчик ошибок?
Допустим, у меня есть следующий синхронный код, который требует оригинальных аргументов при обработке ошибок:
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...