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

}

原文发布于微信公众号 - 交互设计前端开发与后端程序设计(interaction_Designer)

原文发表时间:2017-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券