javascript - 如果 JavaScript 是单线程的,这是什么?

标签 javascript jquery

这是 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/

相关文章:

javascript - 添加指向 D3 轴标签的链接

javascript - 如何调试 MSSQL 中的资源 #6 错误?

Javascript正则表达式验证电话号码

php - 如何制作 jAlert() 像 'Please Wait' 消息。(没有 OK 按钮)

jquery - 将 jQuery 日期选择器应用于 Teamsite 中的 DCT

jquery - 如何获取 jQuery 中以特定模式开头并以另一个模式结尾的元素

javascript - 通过 Twilio 发送 SMS 时如何响应 promise 中的错误?

c# - 如何在 MVC3 中更新没有回发的 View

jQuery Mobile 和文本区域行

javascript - JS for 循环不起作用