javascript同步与异步

2020-04-17  本文已影响0人  来了啊小老弟

先来看一段代码,输出顺序是什么呢?

  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
上一篇 下一篇

猜你喜欢

热点阅读