进程和线程
进程:是计算机已经运行的程序,是操作系统管理程序的一种方式
线程:操作系统能运行运算调度的最小单位,通常情况下是被包含在进程中·
每一个进程中至少有一个线程。
当我们启动一个应用程序的时候,默认就会启动一个进程(也可以是多进程的)
每一个进程中都会启动至少一个线程用来执行程序中的代码,这个线程被称为主线程。
所以我们也说进程是线程的容器。
宏任务和微任务
事件循环包含执行上下文,浏览器,同时也维护着队列。
但是不止维护着一个队列,有宏任务队列和微任务队列。
宏任务队列:AJAX、setTimeout、setInterval、DOM监听、UI Rendering等
微任务队列:Promise的then回调、Mutation Observer API、queueMicrotask()等
在执行上下文栈中为空时,会去队列中寻找任务进行执行,在HTML浏览器和NODE中都会按照这样一个方式执行。先执行微任务队列,然后在执行宏任务队列,在微任务还没有的时候,先去执行宏任务队列,如果在执行宏任务之前发现微任务队列中有任务,那么会优先去执行微任务队列。在每次执行宏任务之前都会去看一下微任务队列中有没有执行完,如果没有则会先清空微任务队列,然后在执行宏任务队列。