function getUrl(url) {
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
console.log(req);
req.open('GET', url, true);
req.onreadystatechange = function () {
if (req.readyState === 4) {
if (req.status === 200 || req.status === 304) {
resolve(req.responseText);
}
} else {
reject(new Error(req.statusText));//发现onerror没有触发后而加上的
}
}
req.onerror = function () {
reject(new Error(req.statusText));
}
req.send();
})
}
getUrl('./index.html').then(function (text) {
console.log(text);
}).catch(function (e) {
console.log(e);
})
上面是使用pormise封装了一下获取url的过程, './index.html'是一个不存在的路径,返回的是404,一开始是希望利用onerror捕捉错误的,但是发现没有起到作用,然后把reject移动到上面,之后catch是可以输出到错误信息,但是控制台依然会报错
有什么方法可以防止浏览器报错
补充说明(问题的核心是如何防止控制台输出 404 notfound, 虽然很多资料也表示不能阻止浏览器输出,但是我不认为这个问题就没有价值,有可能有某些牛人就知道如何防止浏览器输出这样的信息。对于踩这个问题的人,我只能说还没有解决的问题,不等于不能解决,部分人说不能解决,不代表全部人都不能解决)