【发布时间】:2019-06-24 17:27:41
【问题描述】:
在下面的代码示例中,我有两个按钮可以执行以下操作:
1) 点击按钮 1 执行 while 循环
2) 点击按钮2执行日志语句
如果单击按钮 1,然后单击按钮 2,按钮 1 将停止执行。
当另一个动作发生时是否可以让按钮 1 继续执行?
function buttonOneClick() {
let i = 0;
while (i < 1000) {
console.log('index is ', i);
i++;
}
}
function buttonTwoClick() {
console.log('button two clicked');
}
<button type="button" onclick="buttonOneClick()">Click Button One and Start Loop</button>
<button type="button" onclick="buttonTwoClick()">Click Button Two</button>
【问题讨论】:
-
我没有看到你描述的行为,但答案是“不”; JavaScript 是单线程的。在浏览器响应单击另一个按钮之前,按钮 1 处理程序中的代码将继续运行所有 1000 次迭代。
-
我怀疑您的实际代码取决于 console.log 调用。实际的问题代码是什么?
-
@Pointy 如果您运行代码 sn-p 并单击按钮一,您应该会看到索引开始记录。如果您单击按钮 2,您将看到索引停止被记录,并且“按钮 2 单击”被记录。
-
我确实这样做了,但它对我 (Firefox) 不起作用。如果您在 Chrome 中看到这种情况,那是因为 Chrome 中的
console机制很奇怪。 -
如果我理解了,您想知道为什么当用户离开页面时代码会停止?
标签: javascript html