Running code inside another thread in javascript

javascript, multithreading, settimeout

Solution

Even though you have delegated execution via `setTimeout` it will still be executed in the same single thread, it will just wait for its time in queue and will postpone any other activity until it's done.

Please refer to this awesome picture from "Secrets of JS Ninja" book:

Problem

I want to seperate thread on the page to prevent freezing of gui. For this, I am running the function which will freeze gui inside another thread with setTimeout but still freezing. The code and jsbin link are below: ``` <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" type="text/javascript"></script> <meta charset="utf-8" /> </head> <body> <div id="div1"></div> <div id="div2"></div> <input type="button" value="düðme" id="btn" /> <script type="text/javascript"> $("#btn").on("click",function(){ $("#div1").html(new Date()); }); $(document).ready(function(){ setTimeout(function() { count(); },1); }); function count(){ for(var i =0;i<100000;i++){ $("#div2").html(i); } $("#div2").append(new Date()); } </script> </body> </html> ```

Original source