JavaScript面试题-任务队列?
任务队列
- JS 属于单线程
- 任务队列
- 同步任务
- 同步任务是在主线程上排队执行的任务,只有前一个任务执行结束,才能执行下一个任务。
- 异步任务
- 异步任务不进入主线程,而是进入 “任务队列” ,只有 “任务队列” 通知主线程某个异步任务可以执行了,该任务才会进入主线程执行。
- 同步任务
事件循环
-
所有的同步任务都在主线程上执行,形成一个执行栈;
-
主线程外有一个 “任务队列” ;当异步任务有了运行结果,就在 “任务队列” 中放置一个事件;
-
一旦 “执行栈” 中的所有同步任务执行完毕,就会去读取 “任务队列” 检查队列中是否有要处理的事件;那些对应的异步任务,会结束等待状态,进入执行栈,开始执行;
- 主线程不断重复上面第三步。