Eevnt Loop (事件循环)

console.log('script start')

async function async1(){
    await async2()
    console.log('async1 end')
}

async function async2(){
    console.log('async2 end')
    return Promise.resolve().then(()=>{
      console.log('async2 end1')
    })
}
async1()

setTimeout(function(){
    console.log('setTimeout')
},0);

new Promise(resolve =>{
    console.log('Promise')
    resolve()
}).then(function(){
    console.log('promise1')
}).then(function(){
    console.log('promise2')
}).then(()=>{
    console.log('test1')
});
console.log('script end')

 

 

 

async1方法调用

async1 中 await 后 async2方法调用

async2 end 打印,promise.resolve().then(()=>{console.log(async2 end1)}) 加入微任务队列

setTimeOut 宏任务,加入宏任务队列

new Promise 执行 打印 Promise; 把 .then(function(){console.log(‘promise1')}) 加入任务队列

console.log(’script end’) 打印 script end

第一轮结束

执行第一轮第一个微任务 promise.resolve().then(()=>{ console.log(async2 end1) }),打印 async2 end1

await后等 第二轮最后执行

执行第一轮 第二个微任务 .then(function(){console.log(‘promise1')})  打印 promise1,添加 .then(function(){console.log(‘promise2')}) 到微任务队列

第二轮 最后把console.log(async1 end) 加入微任务队列

第二轮结束

第三轮 执行第二轮微任务 .then(function(){console.log(‘promise2')}) 执行,.then(function(){console.log(‘test1‘')}) 加入微任务队列

执行 第三轮 第二个微任务 console.log(async1 end); 打印 async1 end;

第三轮结束

第四轮 执行第三轮 微任务 .then(function(){console.log(‘test1‘')}) 打印test1

第一个宏任务结束

执行第二个宏任务 setTimeOut

打印 setTimeOut

 

宏任务

 

微任务队列

 

第一轮

 

 

 

promise.resolve().then(()=>{ console.log(async2 end1) })

 

 

.then(function(){console.log(‘promise1')})

 

第二轮

 

 

 

.then(function(){console.log(‘promise2')})

 

 

console.log(async1 end)

 

第三轮

 

 

 

.then(function(){console.log(‘test1‘')})

 

 

 

宏任务

 

setTimeOut

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值