对事件循环EventLoop的见解

70 阅读1分钟

事件循环又叫消息循环,是浏览器渲染主线程的工作方式。在Chrome的源码中,它写了这个代码for(;;),开启了一个永不结束的for循环,每次循环主线程都会拿消息队列中的第一个任务过去执行,其他线程完成之后,将之前传递的回调函数包装成任务加入到队列末尾即可,等待主线程循环调度执行。 根据W3C的官方解释,每个任务有不同的类型,同类型的任务必须在同一个队列,不同的任务可以属于不同的对队列,不同的任务队列有不同的优先级,在一次事件循环中由浏览器决定取自哪个队列的任务。过去把消息队列简单的分为宏队列和微队列,现在浏览器更加复杂,已经无法满足。但是浏览器中必定要有一个微队列,他有最高的优先级,必须优先调度执行。