宏任务和微任务

宏任务和微任务实在event table中区分执行时机的
宏任务:每次执行栈执行的代码就是一个宏任务,包括setTimeout , setlnterval , Ajax,DOM事件
微任务:当前 task 执行结束后立即执行的任务,包括 promise async/await
微任务执行时机比宏任务早
执行顺序:
执行一个宏任务(栈中没有就从事件队列中获取)
执行过程中如果遇到微任务,就将它添加到微任务的任务队列中
宏任务执行完毕后,立即执行当前微任务队列中的所有微任务(依次执行)
当前宏任务执行完毕,开始检查渲染,然后GUI线程接管渲染
渲染完毕后,JS线程继续接管,开始下一个宏任务(从事件队列中获取)
区别:
宏任务 是由浏览器定义的,在DOM渲染后触发
微任务 是es6的语法,是es6定义的,在DOM渲染前出发
eventloop中的宏任务和微任务