Browse Source

nicer timeouts

master
Martin Dørum 4 years ago
parent
commit
87109c7272
1 changed files with 23 additions and 5 deletions
  1. 23
    5
      client.js

+ 23
- 5
client.js View File

@@ -2,13 +2,21 @@
function post(url, cb) {
var xhr = new XMLHttpRequest();

let timeout = setTimeout(function() {
console.log("Timed out, aborting.");
var cbd = false;

var timeout = setTimeout(function() {
if (cbd) return;
cbd = true;

cb("ETIMEDOUT");
xhr.abort();
}, 3000);
}, 5000);

xhr.addEventListener("load", function() {
if (cbd) return;
cbd = true;
clearTimeout(timeout);

try {
var obj = JSON.parse(xhr.responseText);
} catch (err) {
@@ -24,11 +32,17 @@
});

xhr.addEventListener("error", function(err) {
if (cbd) return;
cbd = true;
clearTimeout(timeout);

cb(err);
});
xhr.addEventListener("abort", function(err) {
if (cbd) return;
cbd = true;
clearTimeout(timeout);

cb(err);
});

@@ -78,11 +92,15 @@
// Retry on error
if (err === "ENOTREGISTERED") {
console.log("Not registered, reregistering");
setTimeout(function() { init() }, 2000);
setTimeout(init, 2000);
return;
} else if (err == "ETIMEDOUT") {
console.log("Timed out.");
setTimeout(await, 0);
return;
} else if (err) {
console.error(err);
setTimeout(function() { await() }, 2000);
setTimeout(await, 2000);
return;
}


Loading…
Cancel
Save