今天在面试的时候被面试官问道了promise与await async的区别,一下子被噎住了,之前只知道async await是基于promise实现的,了解的不是特别透彻,自己回去以后呢着重学习了一下,有了一些新的总结,与大家分享一下~
首先下图的部分是promise代码的基本情况,需要了解:
然后呢,先说说二者的关系。首先,async await其实是基于promise异步变成语法糖,二者都是为了解决同步异步代码而生的,相信大家在工作中async要用的更多(更加便捷),但在一些比较复杂的情景也可能需要搭配使用,比较promise要有all、race、any这些好用的方法。promise就不过多讲解,主要讲讲async,看下图:
看到这里应该能解决大部分笔试题(执行顺序类的题),来试试吧:
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')