Rxjs吞下错误

时间:2015-06-09 15:32:17

标签: javascript rxjs reactive-extensions-js

有一个简单的Rxjs流,我遇到了这种情况:

Rx.Observable
  .fromArray([1,2,3,4,5,6])
// if commented from here 
  .windowWithCount(2, 1)
  .selectMany(function(x) {
    return x.toArray();
  })
// to here .. the error bubbles up
  .subscribe(function(x) {
    console.log('x:',x)
    throw new Error("AAHAAHHAHA!");  
  });

windowWithCount + selectMany错误在内部默默捕获,无法捕获,也无法在控制台中通知

评论这两个块,至少在控制台上通知错误 我不认为这应该是,或者我错过了什么? here the jsbin

1 个答案:

答案 0 :(得分:3)

您的订阅功能不应该抛出异常。 RxJ模拟异步信息流,其中观察者代码通常从生产者代码异步运行(例如,不在同一个调用栈上)。您不能依赖传播回生产者的错误。

Rx.Observable
  .fromArray([1,2,3,4,5,6])
// if commented from here 
  .windowWithCount(2, 1)
  .selectMany(function(x) {
    return x.toArray();
  })
// to here .. the error bubbles up
  .subscribe(function(x) {
    try {
      console.log('x:',x)
      throw new Error("AAHAAHHAHA!");
    }
    catch (e) { console.log('error: ' + e); }
  });

话虽这么说,看起来RxJS是"吃"这个特殊的例外,可能是一个错误。 RxJS尽力将未观察到的异常作为主机中未处理的异常引发。在这种情况下,这种机制看起来并不起作用。你应该在GitHub上打开一个问题。