如何处理无法到达的XMLHttpRequest端点

时间:2018-08-20 10:02:31

标签: javascript xmlhttprequest

我有下面的代码可以正常工作。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www......com', true);
xhr.responseType = 'json';
xhr.timeout = 2000;
xhr.onload = function() {
  if (xhr.response.success) {
   console.log(xhr.response.value);
  }
};
xhr.send();

现在,我想处理第三方API断开并且端点无法访问的情况。

我尝试了以下操作,但没有成功。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www......com', true);
xhr.responseType = 'json';
xhr.timeout = 2000;
xhr.onload = function() {
  if (xhr.response.success) {
   console.log(xhr.response.value);
  }
};
xhr.onerror = function() {
  console.log("There was an error");
};
xhr.send();

我想念什么?

1 个答案:

答案 0 :(得分:1)

您不能使用try/catch来捕获异步事件。

(除非您与async/await一起使用Promises,但不是)。

您需要使用error event handler

xhr.onerror = function() {
    console.log("There was an error");
};

现代的等效项是:

async function getJSON() {
   try {
       const response = await fetch(url);
       const data = await response.json();
       const status = response.status;
       return { status, data };
   } catch (error) {
       console.log(error);
   }
}