javascript - axios 不会分别返回响应和错误

标签 javascript reactjs promise axios

我有一个 React 组件。在该组件内,我有一个 onFormSubmit 函数,它从另一个组件调用函数。这个其他函数正在使用 axios 发出 POST 请求。 如果 POST 请求为 true,我想返回对第一个函数的响应,如果不是,则返回错误。现在发生的情况是我的“SUCCESS RESPONSE”console.log 总是被触发,即使 axios POST 请求中有错误。如果出现错误,则应触发“ERROR RESPONSE”console.log。

从第一个组件

 onFormSubmit = () => {
    postJobDescriptionQuickApply(this.state, this.props.jobDescription.id)
      .then((response) => {
        console.log('SUCCESS RESPONSE', response)
      })
      .catch((error) => {
        console.log('ERROR RESPONSE', error)
      })
  }

来自第二个组件

export const postJobDescriptionQuickApply = (easyApplyData, jobId) => apiUrl('easyApply', 'easyApply').then(url => axios
  .post(url, {
    applicant: {
      email: easyApplyData.email,
      fullName: `${easyApplyData.firstName} ${easyApplyData.lastName}`,
      phoneNumber: easyApplyData.phoneNumber,
      resume: easyApplyData.resume,
      source: easyApplyData.source,
    },
    job: {
      jobId,
    },
  })
  .then((response) => {
    console.log('SUCCESS', response.data.developerMessage)
    return response.data.developerMessage
  })
  .catch((error) => {
    // handle error
    console.log('ERROR JOB DESCRIPTION', error.response.data.developerMessage)
    return error.response.data.developerMessage
  })

最佳答案

调用return表示成功,调用方法中的.catch函数不会被触发。使用 throw 代替返回 error.response.data.developerMessage。这将导致它被抛出,然后用调用函数中的 .catch 方法捕获。

不过,根据具体情况,通常不建议捕获并重新抛出这样的异常,因为您会丢失堆栈跟踪等。您最好不要在较低的方法中捕获错误,而仅依靠调用方法来处理错误。

关于javascript - axios 不会分别返回响应和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124580/

相关文章:

javascript - React Hooks - 如何使用使状态依赖于另一个状态?

javascript - 如何让 Controller 等待 promise 从 Angular 服务解决

javascript - Smarty 3 在 javascript 中中断 html

javascript - ReactJs 旋转功能不起作用

reactjs - Google-maps-react 折线根本不显示

javascript - 为什么 "read 2 files and return diff"在 NodeJS 中不起作用?

javascript - 请求- promise : downloading/checking a file's MIME type?

javascript - 使用 capybara 捕获浏览器控制台日志

javascript - 需要向用 React JS 制作的简单计算器添加一个简单的功能

javascript - react 和 typescript : Convention for classes when no props are being passed