我正在使用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();
});
即使我用简单的Observable.throw(1).subscribe();
替换throw 1
- 结果是相同的,控制台和流中的消息也不会被破坏。
但是如果我在流中修复错误,并创建另一个在超时后抛出错误的流,我会看到消息“rx.all.js:77 Uncaught 1”,这很棒。
router
.renderResult()
.forEach(() => {
window.ga('send', 'pageview', window.location.pathname);
setTimeout(() => Observable.throw(1).subscribe(), 1000);
});
所以默认情况下rx会抛出未处理的异常,但在这种情况下不会抛出,为什么?谁吃我的错误?任何想法如何调试它?
答案 0 :(得分:0)
所以我发现谁在吃我的美味错误 - superagent@2.0.0。 Issue is already fixed并将在下一个版本中发布。
以下是如何向superagent提供错误的示例:
import { Observable } from 'rx';
import superagent from 'superagent';
const request = superagent.get('/');
Observable.defer(
Observable.fromNodeCallback(request.end, request, res => res.body)
).subscribe(() => {
throw new Error('tasty error');
});