提问者:小点点

在调用另一个函数的函数中处理UnhandledPromiseRejectionWarning


我在处理一个函数中UnhandledPromiseRejectionWarning时遇到了问题,该函数调用其他函数发出axios请求。

const getCode = async () => {
  const code = await baseURL.get('/gcs/login/k?codigoCanal=4')
  return code
}

const posLogin = async (code) => {
  const poslogin = await baseURL.get(`/resource/autenticar/${code}`)
  return poslogin
}

const login = async () => {
 try {
  const code = await getCode();
  const finishedLogin = async posLogin(code)
 } catch (error) {
   handleLoginError(error)
 }
}

const handleLoginError = (error) => {
  if (error.response.status === 400) {
      throw new Error(`[${inst}] Bad Request; ${error.response.statusText}`)
    }
  if (error.response.status === 401) {
    throw new Error(`[${inst}] Wrong credentials; ${error.response.statusText}`)
  }
  throw new Error('Unknown Error')
}


login()

执行此代码将返回UnhandledPromiseRejectionWarning,但我意识到,如果将try catch放在登录函数的catch中n,则此警告将消失

} catch (error) {
  try {
    handleLoginError(error)
  } catch (err) {
    console.log('Ooppss', err)
  }

执行此操作时,代码在嵌套catch中输入,“err”值是handleLoginError(错误)的值

在catch中不执行try catch,如何才能实现同样的操作?


共1个答案

匿名用户

您似乎需要调用login,如下所示:

try {
  await login();
}
catch(err) {
  // handle here the error
}