请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师请教个问题

老师请解释下这两道题的执行过程
async function async1( {
console.log( "async1 start " );
await async2();
console.log( "async1 end " );
}
async function async2(){
console.log( “async2”);
}
console.log( ‘script start ‘);
setTimeout(function(){
console.log( " setTimeout’);
} ,0)
async1();
new Promise(function(resolve){
console.log( " promise1 ");
resolve();
}).then(function( {
console.log( " promise2’);
});
console.log( 'script end " );


function fun(n,a){
console.log(a);
return {
fun:function(m){
return fun(m,n);
}
}
}
var v = fun(0).fun(1);
v.fun(2);
v.fun(3);
setTimeout(function(){
console.log(1);
})
Promise.resolve(function(){
console.log(2);
})
new Promise(function(resolve){
console.log(3);
resolve();
}).then(function(){
console.log(4);
})
console.log(5);

正在回答

1回答

https://img1.sycdn.imooc.com//szimg/63fdbc470935dc3f11230676.jpg

视频中有详细的讲解步骤,同学是哪里没有明白吗?

关键点:整个代码你理解为一个宏任务,先执行宏任务(整个代码执行一遍),script start->async1 start->async2->promise1->script end,  这个时候事件队列中存在多个微任务和一个宏任务(settimeout),然后把所有的微任务全部执行一遍(包括在微任务执行过程中产生的新微任务),微任务执行完毕以后,再次执行timeout宏任务。

还需要注意的一个地方:await 以后才会产生微任务。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕容9463628 #1
    谢谢老师回答
    回复 有任何疑惑可以回复我~ 2023-03-04 13:22:04

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信