2

有一个简单的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错误在内部被静默捕获并且不可捕获并且它也不会在控制台中通知

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

4

1 回答 1

4

您的订阅函数不应该抛出异常。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) {
    try {
      console.log('x:',x)
      throw new Error("AAHAAHHAHA!");
    }
    catch (e) { console.log('error: ' + e); }
  });

话虽如此,看起来 RxJS 正在“吃掉”这个特殊的异常,这可能是一个错误。RxJS 尽最大努力将未观察到的异常引发为主机中未处理的异常。在这种情况下,这种机制似乎不起作用。您应该在 GitHub 上打开一个问题。

于 2015-06-09T16:03:13.267 回答