js是一门单线程语言,同一时间只能做一件事情,因为js与用户互动,以及操作DOM,所以只能是单线程,js同时有两个线程,一个线程在修改DOM,另外一个线程在删除DOM,就无法确定到底以哪个线程为主
JS任务队列首先进行读取,将同步代码压入执行栈中进行执行,当有异步任务时,提交给对应的异步进程进行处理(异步API) 异步API处理完成之后,再推入到任务队列之中,任务队列又分为宏任务和微任务,通过队列的方式分别把任务压入宏任务队列或者微任务队列,在主线程执行完毕之后,查询微任务队列,微任务队列执行完毕之后,取出第一个宏任务进行执行,再看宏任务中是否有微任务,如果有就执行微任务,没有就执行下一个宏任务