js代码本身的执行是单线程同步执行,但是浏览器是多线程的,可以把异步任务通过浏览器线程进行计算,当需要执行的时候,再根据宏任务或微任务放入到对应队列,排队等待执行,就是js的异步编程,都是基于回调进行实现
eventLoop线程主要来负责主线程和其他线程的通信,假如消息读取完成需要主程序执行代码,或者需要执行IO操作了,都需要EventLoop线程去通知
消息队列:异步任务处理完成会把任务放入到任务队列里面等待执行
微任务:由js引擎发起,优先执行,不会触发新一轮tick
宏任务:由宿主发起,会触发新一轮tick