Event Loop
概念
Event Loop是一个程序结构,用于等待和发送消息和事件。
简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为”主线程”;另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为”Event Loop线程”(可以译为”消息线程”)。
上图主线程的绿色部分,还是表示运行时间,而橙色部分表示空闲时间。每当遇到I/O的时候,主线程就让Event Loop线程去通知相应的I/O程序,然后接着往后运行,所以不存在红色的等待时间。等到I/O程序完成操作,Event Loop线程再把结果返回主线程。主线程就调用事先设定的回调函数,完成整个任务。
event loop 的执行规则:
- 首先执行宏任务,这个宏任务一般指 主干代码,我们经常称之为同步代码;
- 执行过程中如果遇到了微任务,将其加入到微任务队列中;
- 执行完宏任务之后,开始执行微任务队列中的任务,直至微任务队列为空;
- 微任务执行完之后,开始执行下一个宏任务;
- 如何循环执行,直到宏任务和微任务都执行完。