浏览器是单线程的,主线程通过执行栈一直执行同步任务,当遇到异步任务会把异步任务放入到任务队列中,然后当执行栈中的任务执行完毕后会去询问任务队列是否有任务存在,首先会去询问宏任务队列,取出一个宏任务去执行,宏任务执行完毕后,下一个宏任务执行之前去检查微任务队列,如果微任务队列中存在微任务,则会依次执行,直到清空,如果执行途中又产生了微任务则会继续清空,这就是一个循环,主线程会不断地去询问任务队列