我有下面的代码可以正常工作。
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();
我想念什么?
答案 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);
}
}