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

我有一个存储方法...


async store() {

      try {

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

      } catch (error) {

               

      }

  },

调用者:


store().then(()=>{ console.log('ok'); }, ()=>{ console.log('not ok'); });

但是当 store 方法失败并捕获到错误时,then总是调用第一个方法,如何才能not ok调用失败的方法?


RISEBY
浏览 119回答 1
1回答

智慧大石

您需要在函数块中throw捕获的错误catchstoreasync 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'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript