【问题标题】:Using Promises properly in javascript在 javascript 中正确使用 Promise
【发布时间】:2021-08-31 13:38:30
【问题描述】:

我有一个简单的 POST 函数,使用 axios.post 发送电子邮件。它工作正常,但我无法捕获错误。

两种方法我都试过了,都没有成功:

export async function postEmail(data) {
  const { subject, message, emailAddress } = data
  const body = {
    email: emailAddress,
    subject: subject,
    message: message
  }
  const url = process.env.EMAIL_API_URL
  const response = await axios.post(url, body)
  if (response.status === 200) { return response }
  else { throw 'Something wrong' }
}

并承诺尝试:

export function postEmail(data) {
  const { subject, message, emailAddress } = data
  const body = {
    email: emailAddress,
    subject: subject,
    message: message
  }
  const url = process.env.EMAIL_API_URL
  return new Promise((resolve, reject) => {
    try {
      const response = axios.post(url, body)
      resolve(response)
    } catch (error) {
      console.log(error)
      reject(error)
    }
  })
}

【问题讨论】:

标签: javascript reactjs promise


【解决方案1】:

我认为如果 axios 得到 4xx 或 5xx 范围内的东西,它已经拒绝了。那么这可能是您从未看到您抛出的错误的原因吗?

试试这个例子:

let response:
try {
  response = await axios.post(url,body);
} catch (e) {
  throw new Error('Something wrong');
}

我的意思是,但不起作用,你只是说你看到的是 axios 错误而不是你的错误吗?

【讨论】:

    【解决方案2】:

    我通过简单地删除返回的 Promise 并返回 try catch 块中的值来解决我的问题,如下所示:

    export async function postEmail(data){
        const emailAddress = 'ergun@atlaspet.com.tr'
        const {subject, message} =data
        const body = {
            email: emailAddress,
            subject: subject,
            message: message
        }
        const url = process.env.EMAIL_API_URL+4
        let response
        try {
            response = await axios.post(url,body)
            return(response)
        } catch (error) {
            console.log(error)
            return(error)
        }
    
    
    }
    

    感谢大家指出正确的方向。

    【讨论】:

    • 你不应该 return 错误对象虽然
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2017-11-28
    • 2015-09-01
    • 2013-01-17
    • 1970-01-01
    相关资源
    最近更新 更多