我正在通过在线课程学习Javascript。他们说Javascript的执行是一个单线程,同步执行"。
然后,他们一次将单个线程定义为一个命令,并一次同步为一个命令。
这些术语之间有区别吗?
我们通常会说Javascript是一种同步语言吗?单线程语言?
答案 0 :(得分:3)
我找到了这个,这真的帮助我理解:
"最后,线程是关于我们同时在您的计算机的微处理器上运行多少代码块(即线程)。如果你有多个核心' (像大多数现代英特尔处理器一样)你可以运行多个线程'同时(即每个处理器核心同时处理指令)。
Javascript引擎不会这样做。使用更多处理器内核时,Javascript并不一定会变得更快。
另一方面,同步/异步与处理单个线程的方式有关。同步意味着在做其他事情之前等我完成'。异步意味着它没问题,在我完成的时候继续前进'。
Javascript是同步和单线程的。引擎内一次只发生一件事,只有一组指令被发送到您的计算机的微处理器。"
答案 1 :(得分:2)
单线程意味着一次只发生一件事。
同步意味着如果你需要等待什么,那么一切都会停止,直到等待结束。
JavaScript中最常见的同步与异步示例是发出HTTP请求。
如果您发出同步请求,则通过网络发送HTTP请求,然后一切都停止。鼠标点击将被忽略。达到零的定时器暂停。在响应回来之前没有任何事情发生。
如果你想要一个异步请求,那么JS引擎继续进行其他工作。当请求返回时,JS引擎不忙,然后它被拾取并处理。