相当于同步JS中的XMLHttpRequest超时
Equivalent to XMLHttpRequest timeout in synchronous JS
有点难以理解为什么超时在同步 JS 中不起作用。我的脚本是同步的,我需要它能够超时,因为我的异常处理它,这可能吗?
我试图研究它,但所有实现(使用 setTimeout 等)似乎只是立即 运行 以下代码,并且将跳过尝试连接,几乎就像超时设置为 0 毫秒一样。
function httpGet(theUrl) {
try {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", theUrl, false);
xmlHttp.timeout = 3000;
xmlHttp.send(null);
NotifyUser("success", "<b>Success</b> We have synced with the server.");
return xmlHttp.responseText;
} catch (e) {
console.log("Connection failed, grabbing local");
NotifyUser("info", "<b>Connection Failed</b> Using local database - Edits will not be saved!(Yet)");
return offlinePopulate();
}
}
最终使其与 jquery.get
异步
$.get( theUrl, function( data ) {
//panic
}).done(function(data) {
console.log("success");
}).fail(function() {
console.log("fail");
});
有点难以理解为什么超时在同步 JS 中不起作用。我的脚本是同步的,我需要它能够超时,因为我的异常处理它,这可能吗?
我试图研究它,但所有实现(使用 setTimeout 等)似乎只是立即 运行 以下代码,并且将跳过尝试连接,几乎就像超时设置为 0 毫秒一样。
function httpGet(theUrl) {
try {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", theUrl, false);
xmlHttp.timeout = 3000;
xmlHttp.send(null);
NotifyUser("success", "<b>Success</b> We have synced with the server.");
return xmlHttp.responseText;
} catch (e) {
console.log("Connection failed, grabbing local");
NotifyUser("info", "<b>Connection Failed</b> Using local database - Edits will not be saved!(Yet)");
return offlinePopulate();
}
}
最终使其与 jquery.get
异步$.get( theUrl, function( data ) {
//panic
}).done(function(data) {
console.log("success");
}).fail(function() {
console.log("fail");
});