最直观的讲一下有啥区别
场景:
三个接口 接口二用到接口一返回的数据
接口三用到接口二和接口一返回的数据
解决方法:
promise长啥样:
function promise(){
return new Promise(resolve => {
resolve(result)
})
}
promise + .then 写法
const makeRequest = () => {
return promise1()
.then(value1 => {
return promise2(value1)
.then(value2 => {
return promise3(value1, value2)
})
})
}
麻烦不?? 或者用promise + .all 写法优化一下
const makeRequest = () => {
return promise1()
.then(value1 => {
return Promise.all([value1, promise2(value1)])
})
.then(([value1, value2]) => {
return promise3(value1, value2)
})
}
看着眼晕不? 用async 解决:
const makeRequest = async () => {
const value1 = await promise1()
const value2 = await promise2(value1)
return promise3(value1, value2)
}
总结:
async/await是一种编写异步代码的新方法。在这之前编写异步代码使用的是回调函数和promise。
async/await实际是建立在promise之上的。因此你不能把它和回调函数搭配使用。
async/await可以使异步代码在形式上更接近于同步代码。这就是它最大的价值。
async/await是过去几年中JavaScript引入的最具革命性的特性之一。它使你意识到promise在语法上的糟糕之处,并提供了一种简单,直接的替代方案。
async说白了就是让请求接口的顺序按自己想要的顺序执行。一个等一个。