javascript “Uncaught(in promise)Object”是什么意思?

km0tfn4u  于 2023-06-04  发布在  Java
关注(0)|答案(2)|浏览(1438)

我有这样一个错误。如何纠正和调试。我希望代码在出现问题时停止。
我的准则

export function postRequestOtpCode(phone: string, token: string): CancellableAxiosPromise {
  axios.defaults.baseURL = ARGO_ENV.API_APPLICATION_URL;
  return API.post('/otp/request-otp-code', { phone: `7${getCleanPhoneNumber(phone)}`, token }, {});
}

async function requestOtpCode(phone: string, captchaToken?) {
  try {
    clearTimer();
    setOtpLoading(true);
    const res = await postRequestOtpCode(phone, captchaToken);
    setOtpState(OTPstate.SHOW);
    startTimer();
    return res;
  } catch (err) {
    throw handleError(err);
  } finally {
    setOtpLoading(false);
  }
}

33qvvth1

33qvvth11#

requestOtpCode返回一个promise,因为它是一个异步函数。
您通过“尝试cathing”axios调用做得很好,但由于添加了throw,因此您有一个uncaught Error
删除catch中的throw,因为它是多余的,catch在这里处理axios调用的可能错误,并使用它做一些事情,如日志记录或呈现用户可读的错误报告。
如果你想停止代码,你可以返回。
下面是一个article,可以更详细地解释js中的try...catch

k97glaaz

k97glaaz2#

我的解决方案:

requestOtpCode(phone, captcha)
  .catch(e => throw new Error()) // here blocked after Error
  .then(() => setOtpState(OTPstate.SHOW))

相关问题