javaScript事件执行顺序(学习记录)
javaScript事件执行顺序
想要理解事件执行顺序,就必须了解以下两件事
1.事件循环(不用看内容,知道名字就行)
JavaScript 语言的一大特点就是单线程。所以同一时间只能做一件事,为了解决这个问题,Event Loop方案应运而生。
2.任务队列
根据规范,事件循环是通过任务队列的机制进行协调的的。
宏任务(macrotask)主要包括:script(整体代码)、setTimeout、setInterval、I/O、UI交互事件、postMessage、MessageChannel、setImmediate(Node.js 环境)。
微任务(microtask)主要包括:Promise.then、MutaionObserver、process.nextTick(Node.js 环境)。
执行顺序为:优先按顺序执行--先执行宏任务,同时遇到微任务将其放入微任务队列--第一圈宏任务执行完毕,紧接着执行微任务--执行完微任务,再紧接着执行微任务。
即按顺序循环执行:宏任务->微任务->宏任务->微任务
直到所有事件执行完毕。
练习题及相关资料
从一道题浅说 JavaScript 的事件循环 · Issue #61 · dwqs/blog · GitHub
第 10 题:常见异步笔试题,请写出代码的运行结果 · Issue #7 · Advanced-Frontend/Daily-Interview-Question