Test case details

Preparation Code

var countTo = 1000;     var loopOver = 10000;

Test cases

Test #1

var counter = 0; while(counter < countTo) {   counter++;   for( var i = 0; i < loopOver; i++ ){} }

Test #2

// async test var counter = 0; window.addEventListener("message", function(event){   counter++;   for( var i = 0; i < loopOver; i++ ){}   if( counter <= countTo ){     window.postMessage(null, "*");   }else{     window.removeEventListener("message", arguments.callee);     deferred.resolve();   } }); window.postMessage(null, "*");

Test #3

// async test var counter = 0; var timer = setInterval(function(){   counter++;   for( var i = 0; i < loopOver; i++ ){}     if( counter > countTo )   {     clearInterval(timer);     deferred.resolve();   } });

Test #4

// async test var counter = 0; setTimeout(function(){   counter++;   for( var i = 0; i < loopOver; i++ ){}     if( counter > countTo )   {     deferred.resolve();   }   else   {     setTimeout(arguments.callee, 0);   } }, 0);