有一个简单的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
答案 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上打开一个问题。