07对js事件循环机制,以下代码输出是什么?
先执行宏任务(当前代码块也算是宏任务),然后执行当前宏任务产生的微任务,然后接着执行宏任务1从上往下执行代码,先执行同步代码,输出scriptstart2遇到setTimeout,现把setTimeout的代码放到宏任务队列中3执行async1(),输出async1start,然后执行async2(),输出async2,把async2()后面的代码console.log('async1end')放到微任务队列中4接着往下执行,输出promise1,把.then()放到微任务队列中;注意Promise本身是同步的立即执行函数,.then是异步执行函数5接着往下执行,输出scriptend。同步代码(同时也是宏任务)执行完成,接下来开始执行刚才放到微任务中的代码6依次执行微任务中的代码,依次输出async1end、promise2,微任务中的代码执行完成后,开始执行宏任务中的代码,输出setTimeout最后的执行结果如下scriptstartasync1startasync2promise1scriptendasync1endpromise2setTimeout
来自:JavaScript语言-js事件循环机制