知识点理解
-
异步编程
-
由于 JavaScript 单线程语言,如果是耗时很短的同步任务还能接受;如果遇到耗时很长的同步任务(如请求资源),直接使用同步编程会导致页面假死。必须借助异步编程才能提高用户的体验。
-
-
call stack (执行栈)
管理同步任务调用顺序的工具,数据结构为栈(先进后出)。
-
queue (消息队列 or 任务队列)
放置异步任务回调函数的工具,数据结构为队列(先进先出)。
-
Event Loop
协调同步任务与异步任务执行的机制
-
宏任务/微任务
- 同属于异步任务,异步任务被分别放入到宏任务 or 微任务后,当任务完成时,会根据一定的规则将异步结果(通过回调函数)放入到 queue 中,等待 Event Loop 调用
- 规则是:
-
将宏任务放入到 queue 之前,会检查有没有微任务
-
如果有的话,先把微任务先放到 queue,等待所有微任务都被执行完,再执行宏任务
-