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

Javascript 对失败的承诺使用then()?,javascript,Javascript,我有一个存储方法 async store() { try { return await axios.post('/upload', data); } catch (error) { } }, 召集人: store().then(()=>{ console.log('ok'); }, ()=>{ console.log('not ok'); }); 但是,当store方法失败并捕获错误时,将始

我有一个存储方法

async store() {
      try {
         return await axios.post('/upload', data);
      } catch (error) {
               
      }
  },
召集人:

store().then(()=>{ console.log('ok'); }, ()=>{ console.log('not ok'); });
但是,当store方法失败并捕获错误时,将始终调用其中的第一个方法,如何才能调用失败的not ok方法?

您需要在store函数的catch块中抛出捕获的错误

您也可以跳过捕捉store函数中的错误,只在调用store函数时捕捉它。为此,您只需返回axios.post的结果

请注意,没有try-catch块,您不需要在axios.post之前等待。。。因为存储函数返回的承诺将解析为axios.post返回的承诺。。。。这意味着如果axios.post返回的承诺。。。如果已实现,则存储函数返回的承诺也将使用与axios.post返回的承诺相同的实现值来实现。。。实现了

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

store()
  .then(() => console.log('ok'))
  .catch(() => console.log('not ok'));
您需要抛出存储函数的catch块中捕获的错误

您也可以跳过捕捉store函数中的错误,只在调用store函数时捕捉它。为此,您只需返回axios.post的结果

请注意,没有try-catch块,您不需要在axios.post之前等待。。。因为存储函数返回的承诺将解析为axios.post返回的承诺。。。。这意味着如果axios.post返回的承诺。。。如果已实现,则存储函数返回的承诺也将使用与axios.post返回的承诺相同的实现值来实现。。。实现了

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

store()
  .then(() => console.log('ok'))
  .catch(() => console.log('not ok'));
存储必须失败;由于您捕获异常而没有引发新异常,因此它永远不会发生。只需删除try..catch--存储必须失败;由于您捕获异常而没有引发新异常,因此它永远不会发生。只需删除try..catch--A trailing.catch将捕获发生在中的错误。then可能是您想要的,也可能不是您想要的。A trailing.catch将捕获发生在中的错误。then可能是您想要的,也可能不是您想要的。
store()
  .then(() => console.log('ok'))
  .catch(() => console.log('not ok'));