如何处理 UnhandledPromiseRejectionWarning

How to handle UnhandledPromiseRejectionWarning

连接后,这段代码会做一些事情

controller.connect((response)=>{ does some stuff })

在连接方法的深处调用了这个异步函数,return通过回调

承诺
async function ServerSend(endpoint,params,callback) {
      const response = axios.get(host+endpoint, {params})
      callback(response);
} 

如果服务器不可用,它会正确抛出:UnhandledPromiseRejectionWarning: E​​rror: connect ECONNREFUSED 127.0.0.1:8088

处理这个异常的正确方法是什么?我可以在异步方法中添加一个 catch 并将所有回调重写为 return 一个错误。但我宁愿在来电者那里抓住它。我无法使用任何一种方法。

axios.get(host+endpoint, {params})  // this is a promise

所以如果它解决了就没问题,但如果它拒绝(并且你没有任何 try..catch,任何附加的 .catch - 它会抛出异常未处理的错误。

为什么方法是:

async function ServerSend(endpoint,params,callback) {
  try {
    const response = await axios.get(host+endpoint, {params})
    callback(null, response);
  } catch (err) {
    callback(err, null);
  }
} 

function ServerSend(endpoint,params,callback) {
  // most callbacks are two parameters - 1st erro or null, second data if no error is present.
  axios.get(host+endpoint, {params}).then(data => callback(null, data)).catch(err => callback(err, null)); 
}