先来看一段代码,输出顺序是什么呢?
setTimeout(function(){
console.log('set1')
new Promise(function(resolve){
resolve();
}).then(function(){
new Promise(function(resolve){
resolve()
}).then(function(){
console.log('then4')
});
console.log('then2')
})
})
new Promise(function(resolve){
console.log('pr1');
resolve();
}).then(function(){
console.log('then1')
})
setTimeout(function(){
console.log('set2');
})
console.log(2)
答案如下:
微信截图_20200417171024.png 微信截图_20200417171133.png
先执行同步代码,当检测到有异步代码时,放到异步队列里等待执行。执行完同步代码时,去看异步队列里是否有需要执行的代码段,先执行里面的微任务,再执行里面的宏任务。两者区分如下:
微信截图_20200417171255.png
网友评论