【发布时间】:2018-10-31 20:40:38
【问题描述】:
我正在使用Router1 编写一个反应应用程序。以下是最终订阅的样子:
router
.renderResult()
.forEach(() => {
window.ga('send', 'pageview', window.location.pathname);
});
此流引发错误(未处理的错误),但我在控制台中看不到它。如果我在forEach 中加入 onError 回调 - 我可以记录错误。
如果我在流中修复错误并在其中创建另一个流,则会引发错误,我不会在控制台中看到消息:
router
.renderResult()
.forEach(() => {
window.ga('send', 'pageview', window.location.pathname);
Observable.throw(1).subscribe();
});
即使我用简单的throw 1 替换Observable.throw(1).subscribe(); - 结果是一样的,控制台和流中没有消息被破坏。
但如果我修复了流中的错误,并创建了另一个在超时后抛出错误的流,我会看到消息“rx.all.js:77 Uncaught 1”,这很好。
router
.renderResult()
.forEach(() => {
window.ga('send', 'pageview', window.location.pathname);
setTimeout(() => Observable.throw(1).subscribe(), 1000);
});
所以默认情况下 rx 会抛出未处理的异常,但在这种情况下不会,为什么?谁吃了我的错误?有什么想法可以调试吗?
【问题讨论】:
-
在 Firefox 中运行?
-
@trincot 不,Chrome。实际上在任何浏览器(Chrome、Firefox、Safari)中的行为都是一样的。 Firefox 有什么特别之处吗?
-
om nom nom nom...吃掉你所有的美味错误:P
-
好吧,在 FireFox 中,一些错误仅显示在以
Ctrl+J打开的窗口中(显示所有窗口的错误)。可能不是这里的问题。
标签: javascript error-handling rxjs superagent