2012-08-07 122 views
0

我试图用Dart使用EventSource。飞镖EventSource错误

var source = new EventSource('/myUrl'); 
source.on.error.add((Event e) => print('error')); 
source.on.message.add((MessageEvent me) => print(me.data)); 

消息很受欢迎,但'错误'总是打印。 如何获得有关此错误的更多信息? 我尝试使用ErrorEvent而不是事件,但它失败,因为这个事件不是一个ErrorEvent

+1

在上面的第二行,你是否尝试在处理程序中打印(e)? - 上面的列表打印字符串'错误',而不是事件e – 2012-08-07 12:28:24

+0

的内容是的,我试过了,它只是打印: '_EventImpl @ 65b10ff'的实例 – 2012-08-07 14:11:51

+0

尝试:print(e.type) – 2012-08-07 15:35:57

回答

1

我没有事件源来测试,但我可以帮你回答你的问题,“我怎么能得到更多关于这个错误的信息?“

变化:

source.on.error.add((Event e) => print('error')); 

要:

source.on.error.add((e) { 
    print('error'); 
}); 

然后,与打印行设置一个断点。这可以让你在Dartium中调试应用程序时检查局部变量e。

您还可以使用dart2js将应用程序编译为JavaScript和Chrome的JavaScript调试器,以了解有关e的更多信息。在调试器中生成的JavaScript中搜索“错误”以确定放置断点的位置。

这有时是非常有用的另一个窍门是将代码更改为:

source.on.error.add((int e) => print('error')); 

e不是一个整数,所以DartEditor会给你一个警告,告诉你什么类型的电子真的是。然后,您可以使用该类型。接下来,按住Command并单击该类型以查看它的源代码。

我最好的建议是尝试使用Chrome的JavaScript调试器并从那里调试问题。这有助于我隔离过去的这类问题。