假设我有以下同步代码,在处理错误时需要原始参数:
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?
}
);
答案 0 :(得分:1)
只需在抛出它之前将其添加为Error对象的属性,或者在下面的包装代码中添加它。
...map(function (value) {
try {
return createInput(value);
}
catch (e) {
e.lastValue = value;
throw e;
}
}).subscribe(..., function (e) {
e.lastValue...