使用什么代替window.onunhandledrejection来处理不同浏览器中的promise错误?

时间:2018-05-28 11:41:30

标签: javascript logging promise

我正在尝试创建记录器来处理客户端上的错误并将它们发送到服务器。处理承诺错误的最佳方法是什么(在.then中)?

我正在使用这个代码,它只在CHROME

中或多或少有效
window.onunhandledrejection = function(e) {
    if (e && e.detail && e.detail.reason) {
        this.sendErrorDetails('error', e.detail.reason.message)
    }
}

它应该是logger.js文件,它会自动捕获所有错误。

1 个答案:

答案 0 :(得分:1)

unhandledrejection似乎是唯一的解决方案,只有Chrome and Safari has supported it(2018年10月)。

或者,您可以使用axios代替,使用响应拦截器作为全局错误处理程序,请查看:

以下是axios自述文件中代码段的副本,以便于参考:

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });

// Add a response interceptor
axios.interceptors.response.use(function (response) {
    // Do something with response data
    return response;
  }, function (error) {
    // Do something with response error
    return Promise.reject(error);
  });