首页 > 试题广场 >

下列程序的运行结果是什么? setTimeout(funct

[单选题]
下列程序的运行结果是什么?
setTimeout(function(){
    console.log(1);
}, 0)
new Promise(function(resolve){
    console.log(2);
    resolve();
    console.log(3);
}).then(function(){
    console.log(4);
})
console.log(5);

  • 2 3 5 4 1
  • 1 2 3 5 4
  • 2 5 4 3 1
  • 2 4 3 5 1
知识点:serTimeOut是异步执行,首先放到任务队列中,属于宏任务。promise中的函数在主线程中自然执行,then是异步执行,属于微任务,任务队列中,微任务先于宏任务执行。
我的思路:先摔1放到异步队列中,再执行promise构造,执行2,遇到resolve也将then甩到异步任务队列中,继续执行下面的代码任务,执行3,然后是5,完成主线任务,执行异步任务,且先执行微任务,再宏任务,所以4之后才是1
个人观点,欢迎大佬来打脸
发表于 2023-03-06 15:50:26 回复(1)