在javascript中睡觉 - 没有setTimeout

Fro*_*odo 2 javascript

这里的所有setTimeout答案都不起作用!

我只想在两个函数之间等待几秒钟,如下所示:

do_fn1();

wait(5000);

do_fn2();
Run Code Online (Sandbox Code Playgroud)

leo*_*eon 9

来自phpied.com:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • -1请不要使用此或任何人推荐它.JavaScript在浏览器的UI线程上运行,因此在"睡眠"时不可能与网页进行任何交互. (6认同)
  • @Frodo:如果你做调试,使用适当的调试工具并设置**断点**! (5认同)
  • +1虽然我同意这样的旋转几乎从来都不是一个好主意,但我不同意这个答案的暗示,因为这*是所提问题的答案.使用`setTimeout`会好得多,但OP专门要求一个不使用它的解决方案.对于非常小且很少延迟(或者,正如OP提到的那样,调试目的),这个解决方案是可以接受的. (5认同)
  • 首先,+1给leon的答案.虽然我不会在我的代码中使用该解决方案,但它在某种程度上符合这个问题.我想这将是一个普遍的话题.我认为任何花时间回答问题的人都应该受到尊重.除非答案是无关紧要的,否则不需要downvote,或者不好+无关紧要.毕竟,我们总是可以提出另一个更好的答案,或者在另一个上写一个更好的+评论. (4认同)