如何将最后一个流值传递给错误处理程序?
How can I pass last stream value to error handler?
假设我有以下同步代码,在处理错误时需要原始参数:
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?
}
);
只需将其添加为 Error 对象的 属性,然后再将其添加到错误对象中,或者添加到如下所示的包装代码中。
...map(function (value) {
try {
return createInput(value);
}
catch (e) {
e.lastValue = value;
throw e;
}
}).subscribe(..., function (e) {
e.lastValue...
假设我有以下同步代码,在处理错误时需要原始参数:
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?
}
);
只需将其添加为 Error 对象的 属性,然后再将其添加到错误对象中,或者添加到如下所示的包装代码中。
...map(function (value) {
try {
return createInput(value);
}
catch (e) {
e.lastValue = value;
throw e;
}
}).subscribe(..., function (e) {
e.lastValue...