try/catch+async/await与Promise.then对比

📅 发布时间:2026/7/6 20:45:03 👁️ 浏览次数:
try/catch+async/await与Promise.then对比
try/catchasync/await与Promise.then对比异步请求处理核心知识点不用工具类时Promise.then和async/await两种写法的区别、错误捕获及各自特点用Promise.then的话成功逻辑写在.then里错误捕获在.catch里这种写法可以只关注.then、不写.catch也不会报错直接取结果赋值数据就行但缺点特别明显写单函数就要套箭头函数要是逻辑里还依赖其他请求再嵌套.then就会陷入回调地狱代码特别不好读。用async/await的话await下一行就是成功逻辑想捕获错误必须用try/catch包起来失败的情况会走到catch里不包的话请求失败代码就直接卡停下一行走不了但优势是可读性极高哪怕多请求、有依赖写出来也像同步代码不会嵌套混乱所以优先用async/await。不管是Promise.then/.catch还是async/awaittry/catch都有finally方法这个方法不管请求成功、失败一定会执行最常用的场景就是请求前开启loading在finally里统一关闭loading避免页面卡在加载状态。用工具类封装异步请求后Promise.then就完全没必要用了优势特别突出一是工具类会统一返回error和响应结果代码里永远不会抛出未捕获的错误不用再包try/catch想处理错误直接if判断error就行不想处理直接return二是失败时用可选链?.就能直接清空上一次的成功数据不用在错误拦截里单独写清空逻辑三是可以放心大胆用await哪怕多个无关联请求并行直接Promise.all后await写个总init方法统一处理最后直接关loading就行就算不关注错误可选链也能让失败时数据自动置空全程不用额外处理代码又简洁又省心。简单说Promise.then不是没好处但仅适用于无依赖的简单请求async/await天生比.then更优配合工具类封装后异步代码写起来会特别顺畅完全不用纠结错误拦截和嵌套的问题。