Rxjs 吞下错误
Rxjs swallows errors
有一个简单的 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
错误在内部被静默捕获并且不可捕获,也不会在控制台中通知
评论这 2 个块至少会在控制台上通知错误
我不认为这是应该的,或者我错过了什么?
here the jsbin
您的订阅函数永远不应抛出异常。 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 是 "eating" 这个特殊的异常,这可能是一个错误。 RxJS 尽最大努力将未观察到的异常作为宿主中未处理的异常来引发。看起来在这种情况下,这种机制不起作用。你应该在 GitHub.
上打开一个问题
有一个简单的 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
错误在内部被静默捕获并且不可捕获,也不会在控制台中通知
评论这 2 个块至少会在控制台上通知错误
我不认为这是应该的,或者我错过了什么?
here the jsbin
您的订阅函数永远不应抛出异常。 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 是 "eating" 这个特殊的异常,这可能是一个错误。 RxJS 尽最大努力将未观察到的异常作为宿主中未处理的异常来引发。看起来在这种情况下,这种机制不起作用。你应该在 GitHub.
上打开一个问题