javascript单线程环境实现真正的setTimeout

时间:2022-05-06
本文章向大家介绍javascript单线程环境实现真正的setTimeout,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

js中提供setTimeout这个函数,实际上是障眼法,任然是单线程中执行的;

并不一定会在你设置的时间执行对应函数;

setTimeout(function () { while (true) {
  console.log(0)
} }, 2000);
setTimeout(function () { alert('1'); }, 4000);

比如上面在4秒之后,不会弹出1,而且浏览器一直在执行

   console.log(0)

所以,真正实现sleep的函数

可以是:

function sleep(millis){
    var date = new Date();
    var curDate = null;
    do { 
 curDate = new Date();

 }
    while(curDate-date < millis);

}