10行代码分清promise、await async

153 阅读1分钟
今天在面试的时候被面试官问道了promise与await async的区别,一下子被噎住了,之前只知道async await是基于promise实现的,了解的不是特别透彻,自己回去以后呢着重学习了一下,有了一些新的总结,与大家分享一下~

首先下图的部分是promise代码的基本情况,需要了解: image.png

然后呢,先说说二者的关系。首先,async await其实是基于promise异步变成语法糖,二者都是为了解决同步异步代码而生的,相信大家在工作中async要用的更多(更加便捷),但在一些比较复杂的情景也可能需要搭配使用,比较promise要有all、race、any这些好用的方法。promise就不过多讲解,主要讲讲async,看下图:

image.png

看到这里应该能解决大部分笔试题(执行顺序类的题),来试试吧:
async function async1(){
        console.info('async1 start')
        await async2();
        console.info('async1 end')
      }
      async function async2(){
        console.info('async2')
      }
      console.log('script start')
      setTimeout(function(){
        console.info('setTimeOut')
      },0)
      async1();

      new Promise(function(resolve){
        console.info('promise1')
        resolve()
      }).then(function(){
        console.info('promise2')
      })
      console.log('script end')