Windows 7
Firefox 10.0.1
我有简单的setTimeout逻辑,我想使用Firebug调试器测试几个断点。
test.js
console.log("one");
setTimeout(function(){ console.log("hmm"); }, 5000);
console.log("two"); //breakpoint here
console.log("three");
的test.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script type="text/javascript" src="../js/test.js" ></script>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
使用Firebug debugger
,我将断点放在注释行中(其中console.log(“two”))
当我加载html页面时,我得到输出:
one
并按预期在断点处停止但 setTimeout永远不会被执行。
这是firebug调试器的错误吗?有没有人见过这个?
更新
我更多地调查并发现:
如果在调试器模式下单击“继续”并在5000ms(在setTimeout中指定的时间)内经历断点,则会显示“hmm”msg。
如果你在断点处停止超过5000毫秒,那么即使在“继续”按钮之后,“hmm”msg也不会显示。
答案 0 :(得分:2)
请查看this issue。
答案 1 :(得分:1)
setTimeout
才会触发,即使线程繁忙时超时也是如此。设置一个断点只是挂起线程,并在停止时保持忙碌状态。所以,这段代码将返回
one
two
three
hmmm //(in 5 seconds, if no breakpoint, at once if you stop at a breakpoint for more than 5 seconds and then run the code further)
这是正确的setTimeout
行为。
答案 2 :(得分:1)
我没有问题。 setTimeout中的代码在5秒后执行,因此您的预期输出为
一个
2
3
嗯
答案 3 :(得分:0)
你可以在回调中设置断点到setTimeout 并继续介入其中