为了账号安全,请及时绑定邮箱和手机立即绑定

对失败的承诺使用 then()?

对失败的承诺使用 then()?

RISEBY 2022-11-03 15:01:01
我有一个存储方法...async store() {      try {         return await axios.post('/upload', data);      } catch (error) {                     }  },调用者:store().then(()=>{ console.log('ok'); }, ()=>{ console.log('not ok'); });但是当 store 方法失败并捕获到错误时,then总是调用第一个方法,如何才能not ok调用失败的方法?
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

您需要在函数块中throw捕获的错误catchstore


async store() {

    try {

       return await axios.post('/upload', data);

    } catch (error) {

       throw error;  

    }

}

您也可以跳过捕获函数中的错误,并在store调用函数时简单地捕获它store。为此,您只需要返回axios.post(...).


async store() { 

   return axios.post('/upload', data);

}

(注意,没有这个try-catch块,你不需要一个awaitbeforeaxios.post(...)因为store函数返回的 promise 将被解析为返回的 promise axios.post(...)。这意味着如果返回的 promiseaxios.post(...)被履行,store函数返回的 promise 也将履行具有与履行返回的承诺相同的履行价值axios.post(...)。)


将第二个参数传递给then函数是不常见的。相反,您应该链接一个.catch()块来捕获错误。


store()

  .then(() => console.log('ok'))

  .catch(() => console.log('not ok'));


查看完整回答
反对 回复 2022-11-03
  • 1 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信