事件轮询
-
时间: 从开始执行代码开始执行轮询
-
规则:
=> 从 JS 整体代码开始(这是一个宏任务) => 没执行完毕一个宏任务, 就会清空一次微任务队列(不管微任务队列里有多少任务, 都执行完毕) => 再次执行下一个宏任务 => 循环往复, 直到所有的任务队列清空结束
关键字:
-
- 单线程: JS 是一个单线程的代码执行机制, 逐行向下执行, 上边的代码执行时间过长会阻塞下边的代码
-
- 调用栈: 用来执行代码的, 所有的代码进栈执行, 执行完毕再出栈 (后进先出)
-
- 队列: 用来存放异步任务的, 先进先出
- => 宏任务队列: JS 整体代码, setTimeout, setInterval...
- => 微任务队列: promise.then()...
- 队列: 用来存放异步任务的, 先进先出
-
- 轮询: 轮流询问 宏任务 与 微任务队列的任务来执行
-
- 注意: WEBApi, 用来负责提供异步机制, 计时, 分配任务去指定队列
- 最关键的一句话: 每执行完毕一个宏任务, 会清空一次微任务队列 (前提是你要区分清楚什么是同步任务, 什么是宏任务, 什么是微任务)