async && await 对比 Promise

async && await 对比 Promise 的优点
  1. 处理异常
    Promise 不能catchPromise内部的异常
       //Promise写法
    async function returnPromise() {
        return 'ok'
    }
    
    try {
        returnPromise()
            .then(res => {
                console.log(res)
                throw new Error('可能出错的位置')
            })
            .catch(reason => {
                console.log(reason)
            })
    } catch (e) {
        console.log(e)
    }
    
    async && await 同步和异步所抛出的异常可以一起处理
    //改成 async && await
    (async () => {
        try {
            const msg = await returnPromise()
            console.log(msg)
            throw new Error('可能出错的位置')
        } catch (e) {
            console.log(e)
        }
    })()
    
  2. 处理then
    Promise 虽然对比层层回调来说已经算是很美观,但是请接下看
    (() => {
        returnPromise()
        .then(res => {
            console.log(res)
            //dosomething
            return Promise.resolve('step1')
        })
        .then(res => {
            console.log(res)
            //dosomething
            return Promise.resolve('step2')
        })
        .then(res => {
            console.log(res)
            //dosomething
            return Promise.resolve('step3')
        })
        .then(res => {
            console.log(res)
            //dosomething
            return Promise.resolve('step4')
        })
    })()
    
    async && await 更加简洁
    (async () => {
        console.log(await returnPromise())
        //dosomething
        console.log(await Promise.resolve('step1'))
        //dosomething
        console.log(await Promise.resolve('step2'))
        //dosomething
        console.log(await Promise.resolve('step3'))
        //dosomething
        console.log(await Promise.resolve('step4'))
        //dosomething
    })()
    
结语

对于两者的态度,笔者认为两者应该是共生的,而不是async && await 取代Promise,毕竟前者的实现靠着后者,或者说只是后者的语法糖。毕竟,Promise.allPromise.race等一些方法,目前来说处理批量异步还是算厉害的。本篇博客的意义在于让更加透彻的理解Promise ,以及async && await 这块语法糖到底好在哪里。

如果对你有帮助的话,请点一个赞吧

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值