JS:一文理解单线程与并发

82 阅读2分钟

前言

哈喽 你好呀! 我是你的人类朋友😁 今天分享一下:

  • JS中单线程的相关内容📖
  • JS是如何实现并发处理的📖

什么是单线程

当我们说某个系统或程序是单线程的时候,意味着它只能同时(也就是在同一个时间点)执行一个任务或操作。

可以把它想象成一个人一次只能做一件事情。

理解单线程

举个例子,假设你是一名厨师,你有一个炉子和多个锅。

如果你是单线程的,那么你只能在一个锅里煮一道菜,然后再转到下一个锅里煮下一道菜,依次类推。

你不能同时在多个锅里同时煮菜,因为你只有一双手和一份注意力。

单线程的JavaScript

JavaScript 是一种单线程的编程语言。

当浏览器执行 JavaScript 代码时,它会按照代码的顺序一行一行地执行,而且一次只能执行一行代码。

如果有一个任务需要花费很长时间来完成(比如下载大文件或者执行复杂的计算),那么在这个任务完成之前,JavaScript 无法执行其他的代码。

这就像是厨师在等待一道菜煮熟之前无法同时处理其他的菜。

JavaScript如何实现并发

JavaScript中有一些机制来处理一些并发的操作,比如使用回调函数、Promise、async/await 等。

并发:一个厨房里烧着多个菜,一个厨师轮流为一个个锅进行炒菜操作防止菜烧焦。(注意,并不是同时,在任何一个时间点,厨师都只能处理一锅菜,厨师无法分身

这些机制允许我们在等待某个操作完成的同时,执行其他的代码,以提高程序的效率和响应性。

但总体上,JavaScript 仍然是单线程的,它只能在任意时刻执行一个任务。

总结

  • JS是单线程的。

  • 单线程代表在同一个时间点,JS只能处理一个任务。

  • 但是JS可以通过一些机制来实现并发,如使用回调函数、Promise、async/await 等。

  • 并发:一个厨房里烧着多个菜,一个厨师轮流为一个个锅进行炒菜操作防止菜烧焦。(注意,并不是同时,在任何一个时间点,厨师都只能处理一锅菜,厨师无法分身