【发布时间】:2015-03-17 00:44:21
【问题描述】:
我已经阅读了很多关于 JavaScript 单线程执行模型、事件循环和事件队列的文章。
但有一点不清楚。我创建了一个小提琴来说明我的问题:http://jsfiddle.net/yzpmf67f/
<button onClick="window.compute()">Do computation</button>
<button onClick="alert('doing')">Do something else</button>
window.compute = function compute() {
var result = 0;
for (var i = 0; i < 100000; i++) {
for (var j = 0; j < 100000; j++) {
result = i + j;
}
};
var textnode = document.createTextNode(result);
document.body.appendChild(textnode);
}
如果您单击“执行计算”按钮,则需要一些时间并阻止页面。但是如果你点击“做其他事情”按钮,当页面仍然挂起时,它仍然会被添加到队列中,并在我们的计算完成后执行。
那么,如果 JS 是单线程的,那么在我们计算其他内容的同时,谁将 UI 事件放入事件队列?
【问题讨论】:
-
那么这个小提琴在哪里? :)
-
对不起,由于缺少源代码,遇到了stackoverflow
标签: javascript event-loop