我想知道下面显示的序列是如何发生的。
这是有问题的功能:
WebSocketConnector.prototype.sendMessage = function(message) {
if (socket !== null) {
socket.send(message);
console.log('Sent: ' + message);
} else {
alert('Failed to send message. WebSocket connection not established.');
}
};
以下是调试此函数的调用时发生的情况:
sendMessage
,并且我会在发出呼叫时记录。日志中没有sendMessage
次调用的不明,所以我不相信异步是一种解释。如果我将一个console.log语句添加到else块的第一行(将警报按下到第37行),控件将从第34行直到第37行(跳过console.log语句)。 / p>
另外,我应该提到,即使直接进入该代码,也不会出现任何警报。
以下是sendMessage
函数的间距和CRLF:
答案 0 :(得分:3)
这是因为调试器在返回调用堆栈帧之前会步骤到最后一个可执行行。在您的情况下,这是包含alert()
函数的第36行。如果调试器跳转到函数的结束大括号,即第38行,那就更清楚了。
已有报告更改此行为:
答案 1 :(得分:1)
不幸的是,Firefox中的调试器有一些非常奇怪的行为。如果你描述的内容可能与this bug有关,我不会感到惊讶。 "步骤"功能有时无法达到您的预期,或者Chromium浏览器的功能。