我用setTimeout函数包装了长时间运行的逻辑(longLoop),但直到长时间运行的执行结束,UI仍然无响应。它不允许点击其他UI按钮。请看下面的例子,如果有任何问题,请告诉我。SetTimeout函数仍然使用户界面无响应,直到其操作超过
function longLoop() {
var startLogTime, endLogTime;
startLogTime = new Date().getTime();
console.log("loop begin");
for (var i = 0; i <= 500000000; i++) {
var j = 10;
}
endLogTime = new Date().getTime();
console.log("loop execution takes " + (endLogTime - startLogTime) + " milliseconds");
}
$(document).ready(function() {
$("#btnButton").bind("click", function() {
setTimeout(longLoop, 15);
});
$("#anotherButton").bind("click", function() {
console.log("another operation clicked");
});
});
<input type="button" id="btnButton" value="Start Long Operation" />
<input type ="button" id="anotherButton" value= "Another operation" />
感谢
JavaScript是“单线程”的。很确定'setTimeout'在运行时不会自己创建“线程”,它只是稍后运行。 –