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

时间:2015-01-01 03:40:22

标签: reactive-programming rxjs

假设我有以下同步代码,在处理错误时需要原始参数:

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 个答案:

答案 0 :(得分:1)

只需在抛出它之前将其添加为Error对象的属性,或者在下面的包装代码中添加它。

...map(function (value) {
    try {
        return createInput(value);
    }
    catch (e) {
        e.lastValue = value;
        throw e;
    }
}).subscribe(..., function (e) {
    e.lastValue...