如何将最后一个流值传递给错误处理程序?

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...