我正在通过在线课程学习JavaScript。他们说JavaScript的执行是"单线螺纹,同步执行"。然后,他们一次将单线线程定义为一个命令,然后同步为一个命令。
这些术语之间有区别吗?
我们是否通常说JavaScript是一种同步语言?单线语言?
我找到了这个,它确实帮助我理解:
"最终线程是关于我们同时在计算机的微处理器上运行多少个代码块(即线程(。如果您有多个"核心"(如大多数现代的英特尔处理器所拥有的,您可以同时运行多个"线程"(即,每个处理器核心都同时处理指令(。
JavaScript引擎不这样做。JavaScript不一定会使用更多的处理器内核更快。
另一方面,同步/异步与单个线程的处理方式有关。同步意味着"等待我完成其他事情"。异步的意思是"没关系,我结束时继续前进"。JavaScript是同步且单线线程。在发动机中一次只发生一件事,只有一组说明被发送到您的计算机的微处理器。"
单线螺纹意味着一次只发生一件事。
同步意味着如果您需要等待某些东西,那么一切都停止直到等待结束。
JavaScript中同步与异步的最常见示例是提出HTTP请求。
如果您提出同步请求,则通过网络发送HTTP请求,然后一切都停止。鼠标点击被忽略。搁置时达到零的计时器。在响应恢复之前,什么都没有发生。
如果您想要异步请求,则JS引擎将继续进行其他工作。当请求返回并且JS引擎不忙时,它被捡起并处理。