async/await和Promise的关系
async/await和Promise的关系async/await 是消灭异步回调的终极武器但是和Promise互不相斥两者相辅相成相辅相成:执行async函数,返回的是Promise对象await相当于Promise的thentry…catch 可捕获异常,代替了Promise的catch执行async函数,返回的是Promise对象async function fn1(){return 100
·
async/await和Promise的关系
- async/await 是消灭异步回调的终极武器
- 但是和Promise互不相斥
- 两者相辅相成
相辅相成:
- 执行async函数,返回的是Promise对象
- await相当于Promise的then
- try…catch 可捕获异常,代替了Promise的catch
执行async函数,返回的是Promise对象
async function fn1(){
return 100 //相当于return Promise.resolve(100)
// return Promise.resolve(200)
}
const res1=fn1()//执行async函数,返回的是一个Promise对象,比如上面的return 100封装成了一个Promise对象进行返回
console.log('res1',res1)//Promise对象
res1.then(data=>{
console.log('data',data)//100
})
//可以用const data= await fn1()接收data值 使用await,要和async配套
await相当于Promise的then
!( async function(){
const res2=Promise.resolve(100)//相当于上面例子的res1 也就是fn1()
const data= await res2 //await相当于Promise的then res1.then(data=>{})
console.log('data',data)//100
})()
!( async function(){
const res2=await 400 //await Promise.resolve(400) await后面不跟Promise,也会被封装成Promise
console.log('res2',res2)//400
})()
try…catch 可捕获异常,代替了Promise的catch
!( async function(){
const p4=Promise.reject('err')//rejected状态
try{
const res=await p4 //await相当于then,但是reject不会触发then
console.log(res) //不会输出,因为const res=await p4被报错,被catch捕获
} catch(ex){
console.error(ex)//try...catch 相当于Promise的catch
}
})()
总结:async封装Promise,await相当then,try…catch相当于catch
更多推荐
已为社区贡献1条内容
所有评论(0)