javascript - 如何对浏览器 Javascript 中的 NS ERROR FAILURE 错误做出反应
问题描述
在 Firefox 的 JavaScript 引擎中,我执行(已弃用)同步XMLHttpRequest
,如下所示:
var request = new XMLHttpRequest();
request.open('GET', 'http://localhost:8780/BoilerData/invention.html', false);
request.send();
if (request.status === 200) {
...
} else {
...
}
问题是当服务器myserver.com
未运行时,我在浏览器控制台中出现NS ERROR FAILURE
错误并且该else
部分未执行。
但是我想对 JavaScript 中的这个错误做出反应。如何在仍然执行 aa synchronous 的同时捕获此错误并对其做出反应(例如,使用另一台服务器)XMLHttpRequest
。
更新
这里有更多关于错误信息的细节。在我的浏览器(Firefox 78.4.1esr)的控制台中,我看到以下内容:
解决方案
如果您更喜欢同步请求,请尝试捕获net::ERR_CONNECTION_TIMED_OUT
异常:
var request = new XMLHttpRequest();
request.open('GET', 'http:/myserver.com/bar/foo.txt', false);
try{
request.send();
if (request.status === 200) {
//...
}
}catch(e){
console.log('Got an exception: ', e);
//else ...
}
不推荐使用主线程上的同步 XMLHttpRequest,您可能希望request.open
异步执行,并将else
逻辑放在onerror
事件处理器中:
var request = new XMLHttpRequest();
request.open('GET', 'http:/myserver.com/bar/foo.txt', true);
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// ...
}
}
request.onerror = function() {
console.log('An error occured! status = ', request.status);
// what else {
// ...
}
request.send();
推荐阅读
- javascript - Flatpickr onChange 事件设置 end_date
- javascript - 优化返回数组元素所有组合的函数
- excel - 在 Excel VBA 中定义动态范围,良好的编码实践
- python - 如果出现在python中,如何从列值中删除额外的小数
- python - 如何修复 PyInstaller 创建的 main.exe 上的“[Errno 13] Permission Denied”?
- reactjs - 如何处理 React 应用程序中的批量和关键状态更改?
- javascript - 2d 方形到矩形碰撞检测和动作(物理)
- kotlin - 如何结合两个可流动并仅获得相同的排放值?
- python - 如果数据库发生变化,如何停止执行长进程?
- node.js - 如何更快地从 MongoDB 集合中获取大量文档?