问题

我有一个React组件.在该组件中,我有一个函数onFormSubmit来自另一个组件调用函数.这个其他函数正在使用axios发出POST请求. 如果POST请求是真的,如果没有,我想返回对第一个函数或错误的响应.现在发生的是我的’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函数不会被触发.而不是返回error.response.data.developerMessage使用throw.这将导致抛出它,然后在调用函数中捕获.catch方法.

根据情况,通常不宜捕获和重新抛出这样的异常,因为您丢失堆栈跟踪等.您最好不要在较低的方法中捕获错误,只需依赖调用方法来处理错误.

  相同标签的其他问题

javascriptreactjspromiseaxios