代码执行中的同步延迟

新手上路,请多包涵

我有一段代码需要在延迟 5000 毫秒后执行。目前我正在使用 setTimeout 但它是异步的,我希望执行等待它返回。我尝试使用以下内容:

 function pauseComp(ms)
 {
     var curr = new Date().getTime();
     ms += curr;
     while (curr   < ms) {
         curr = new Date().getTime();
     }
 }

但是我想延迟的代码是使用 raphaeljs 绘制一些对象并且显示一点也不流畅。我正在尝试使用 doTimeout 插件。我只需要延迟一次,因为延迟和要延迟的代码都在一个循环中。我不需要 ID,所以我没有使用它。例如:

 for(i; i<5; i++){ $.doTimeout(5000,function(){
         alert('hi');  return false;}, true);}

这等待 5 秒,然后给出第一个 Hi,然后连续的循环迭代在第一个之后立即显示警报。我想让它做的是等待 5 秒再次发出警报等待然后发出警报等等。

任何提示/建议表示赞赏!

原文由 kavita 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 295
1 个回答

已接受答案的变体与这个答案一样好。

此外,我同意偏好 setTimeout 和异步函数调用的注意事项,但有时,例如,在构建测试时,你只需要一个同步等待命令……

 function wait(ms) {
    var start = Date.now(),
        now = start;
    while (now - start < ms) {
      now = Date.now();
    }
}

如果你想要以秒为单位,请在 while 检查时将开始毫秒除以 1000 …

原文由 ThinkBonobo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏