- 进程(process):计算机已经运行的程序,是操作系统管理程序的一种方式;
- 线程(thread):操作系统能够运行运算调度的最小单位,通常情况下它被包含在进程中;
- 可以说进程是线程的容器;
javascript是单线程的,也应该有自己的容器:浏览器或者Node
javascript代码执行是在单个线程里执行的,所以同一时刻,javascript只能做一件事,如果某一件事比较耗时,那么就会阻塞我们后面代码的执行
但是浏览器的每一个tab就是一个进程,每一个进程又是多线程的,那么,其他的线程就可以帮助来完成耗时的操作,js线程只需要在特定的事件回调即可(事件循环:)
- 事件循环执行规则:
- 事件循环维持着两个队列:宏任务队列,微任务队列,通过事件循环来调用队列里面的回调
- 在执行任何一个宏任务之前(不是队列,是一个宏任务),都会先查看微任务队列中是否有任务需要执行
- 宏任务: setTimeout, setInterface, ajax, Dom事件
- 微任务: Promise, queueMicrotask等
题一:
1 | //题1 |
分析图:

题二:
1 | //题二: |
分析图:

题三:
1 | //题三: |
分析图:

题四:(node环境下)
1 | //题四: |
分析图:

好了完结散花……!