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)...