如何在node.js调试器中检查承诺?
how can I inspect promises in the node.js debugger?
我用node.js写了一个应用程序。在主模块中,我使用cujojs的when模块创建了各种承诺,并将它们推入数组中,并使用when.all().then()在它们全部实现时发送快乐消息。当通过WebSocket连接接收某些消息时,一些承诺被解决。当WebSocket消息以一定的顺序到达时,我得到快乐的消息。当消息以不同的顺序到达时,我没有收到快乐的消息。
所以我想看看主模块中的承诺数组和其他变量。简单地调用调试器会导致"No Frames"错误,因此我设置了一个虚拟的"心跳"函数,通过setInterval每秒调用一次。然后,当我在heartbeat函数中设置断点并试图查看承诺数组时,调试器告诉我它是未定义的(应该是一个模块范围的变量!)。我在心跳函数中放了一条var pa = promises_array
线。然后我试着在repl中使用when的检查方法,如下所示:
debug> repl
Press Ctrl + C to leave debug repl
> for( p in pa ){ console.log( p.inspect().state }
上面写着TypeError: Object 0 has no method 'inspect'
所以我不知道发生了什么。当我在模块中设置断点时,为什么我看不到模块中的变量?
尝试使用节点检查器。
Node Inspector允许你调试Node.js代码,就像你在Chrome Developer Tools中调试前端应用程序一样,包括使用调试器语句和设置断点。你可以一步一步地履行你的承诺。
虽然使用node-inspector可能是一个好主意,但我要花一些时间才能在我的平台上设置它,并且我刚刚发现我的问题的实际正确答案是我应该在repl
中键入以下内容for( p in pa ){ console.log( 'marker '+p+' is '+pa[p].inspect().state ); }
换句话说,我是一个白痴,试图调用索引p上的方法,而不是索引p上的数组的值:"(
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 从函数返回角度承诺
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何检查对象是否为承诺
- 我可以创建一个承诺来检查变量是否设置为角度吗?
- 角度控制器检查服务承诺更新视图
- 如何在angularjs中检查承诺返回值并采取行动
- 测试一个由承诺返回的函数——检查错误
- 如何检查angularjs服务中的返回值是一个承诺
- 如何在node.js调试器中检查承诺?
- 有没有一种方法可以检查$.when(..)中承诺的个人结果,而不管最终状态如何