
1.jpg
如图,addEventListener只是往event事件队列中注册函数,但此时并未执行。一旦用户点击按钮(触发行为是UI线程接收),浏览器主线程会将对应target下注册的函数,推入宏任务队列。一旦js线程拿到了执行权,才能去消费宏任务队列中的函数。js有个事件轮询机制,不断循环的去宏任务队列去看是否有新的函数,有的话就会出列执行,当队列为空的时候,就会交出执行权,而一旦有了新函数就会去抢执行权。
如图,addEventListener只是往event事件队列中注册函数,但此时并未执行。一旦用户点击按钮(触发行为是UI线程接收),浏览器主线程会将对应target下注册的函数,推入宏任务队列。一旦js线程拿到了执行权,才能去消费宏任务队列中的函数。js有个事件轮询机制,不断循环的去宏任务队列去看是否有新的函数,有的话就会出列执行,当队列为空的时候,就会交出执行权,而一旦有了新函数就会去抢执行权。