Async和Await
1、什么是Async和Await
async和await是一种同步的写法,但还是异步的操作,两个内容必须同时写才会生效,不然的话不好使
*async的用法,它作为一个关键字放到函数前面,这样普通的函数就变成了异步函数
*异步async函数调用,跟普通函数的使用方式一样
*异步async函数返回的是一个Promise对象
*async函数配合await关键字使用是异步方法,但是阻塞式的
2、什么是回调地狱
一个异步请求嵌套一个异步请求,一个异步请求依赖于另一个的执行结果,使用回调的方式相互嵌套。它会造成我们代码的可读性非常差,后期不好维护
//回调地狱
setTimeout(function(){
console.log('111') //111
setTimeout(function(){
console.log('222') //222
setTimeout(function(){
console.log('333') //333
},900)
},600)
},300)
3、解决回调地狱
通过async、await解决
//封装一个返回Promise的异步任务
function fn(str){
var p=new Promise(function(resolve,reject){
var flag=true
setTimeout(function(){
if(flag){
resolve(str)
}else{
reject('失败')
}
})
})
return p
}
//封装一个执行上边异步任务的async函数
async function test(){
var res1=await fn('123')
var res2=await fn('456')
var res3=await fn('789')
console.log(res1,res2,res3)
}
//执行函数
test()