setTimeout alternative
setTimeout() alternative as an Happy New Year wish ?
by mlefree
HTML
<script src="https://code.jquery.com/jquery-2.2.0.js"></script>
<h3>
I was fully overloaded and on a secret mission
</h3>
<p>
ie IE broke <b>setTimeout()</b> : should be replaced
</p>
<div id="messageTimer"></div>
<div id="message"></div>
<ul id="results"></ul>
CSS
#results li.pass { color: green; }
#results li.fail { color: red; }
JavaScript
function assert(value, desc) {
var li = document.createElement("li");
li.className = value ? "pass" : "fail";
li.appendChild(document.createTextNode(desc));
document.getElementById("results").appendChild(li);
}
var elem = document.getElementById("message")
elem.innerHTML = "Loading ..";
// even without settimeout
setTimeout(function(){
//document.getElementById("messageTimer").innerHTML = "Happy New Year ! (old version)";
assert(null, "Happy New Year (old setTimeout version)");
}, 10);
window.setTimeout = function() {return console.log('test')};
setTimeout(function(){
document.getElementById("messageTimer").innerHTML = "Timer removed ?";
}, 10);
jQuery.ajax({
url: "/echo/html/",
success: function(html, textStatus, jqXHR) {
assert(elem, "xhrTest "+textStatus);
// window timer broken
setTimeout(function(){
document.getElementById("messageTimer").innerHTML = "Timer removed";
}, 3000);
// a mock timer
for (var i=0; i < 500000; i++){
var j = i; j++;
elem.innerHTML = "Timeout..." + j;
}
elem.innerHTML = "My Timeout ended : " + j;
//assert(elem, "The element to append to, via a closure.");
//elem.html(html + 'was loaded'); // we're using a fake that returns nothing
//elem.innerHTML = "<h2>Happy New Year !! (via XHR)</h2>";
assert(elem, "Happy New Year !! (new XHR version)");
assert(elem, "mission succeeded ;)");
}
});
elem.innerHTML = "Loading ....";
assert(elem, "end of synchrone code");
/*
var settings = {
async: false,
contentType: "application/json",
url: "/echo/html/",
data: {
tags: "jquery",
tagmode: "any",
format: "json"
},
success: function(data, textStatus, jqXHR) {},
error: function(jqXHR, textStatus, errorThrown) { },
complete: function(jqXHR, textStatus)...