作用:处理then的调用链,解决回调地狱的问题
优点:解决回调地狱问题
缺点:多个异步代码没有依赖性却使用了await
会导致性能上的降低
说明:
一个函数如果加上async
,那么该函数就会返回一个Promise
async function test() {
return "1"
}
console.log(test()) // -> Promise {<resolved>: "1"}
eg1:
function 摇色子(){
return new Promise((resolve, reject)=>{
let sino = parseInt(Math.random() * 6 +1)
setTimeout(()=>{ resolve(sino) },3000) })
}
async function test(){
let n =await 摇色子()
console.log(n)
}
test()
上面这段代码async中使
await 摇色子()
先执行,等到三秒后执行完再把得到的结果赋值给左边的n,也就是说test函数需要三秒钟才执行完成,所以test函数是异步的,因此前面必须写async
eg2:
业务场景:我们有一本书,目前只有书名
要通过请求 getBookId 获取到书的id
然后靠id通过请求 getBookDes 获取到书的description
最后要把id,和title,还有description一起存到数据库中 uploadBookInfo
async function uploadWidthAsync(title = '你不知道的JavaScript') {
const id = await this.getBookId(title);
const des = await this.getBookDes(id);
const result = await this.uploadBookInfo({ id, des, title });
console.log(id, des, result); // 1001 这是一本好书 上传成功 },