这是 code :
// link 1 handler. This must finish in any case before link2 starts
$('#link1').click(function () {
console.log("First Handler");
setTimeout(function() {
console.log("Thread???");
}, 2000);
});
// link 2 handler. It starts only when block code of link1's handler finish
$('#link2').click(function () {
console.log("Second Handler");
});
$('#link1').click();
$('#link2').click();
按顺序点击 link1 和 link2,意味着(对于我 understand )link2 的处理程序的 block 代码不能在 link1 的处理程序完成之前启动(因为 JS 是单线程,系统事件是同步的)。
那么,为什么要在 2 秒后打印 console.log("Thread???");
?我把它看成一根线。而且,它的行为是一样的......
最佳答案
单线程?是的!!这个解释太全面了,不能在这里做一个简短的回答,之前已经介绍过了。请参阅这篇精彩的文章:John Resig - How JavaScript Timers Work
已编辑:因为“是!!”也不异常(exception)。 :-)
关于javascript - 如果 JavaScript 是单线程的,这是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512888/