如何在不停止HTML呈现的情况下放置停止代码的延迟

How to put a delay that stops the code without stop the HTML render?

本文关键字:延迟 代码 情况下 不停止 HTML      更新时间:2023-09-26

我需要在for循环中停止我的代码,一个暂停时间的sleep()函数不起作用,因为我的HTML没有在该时间内呈现,而setTimeout函数将在执行设置代码之前继续循环。

例如,这将显示带有1、2、3的警报,然后显示带有"停止"的3个警报。

function test(){
  for (var i = 1;i<4;i++) {
    alert(i);
    setTimeout(function(){alert("Stop");},1000);
  }
}

在让HTML呈现的同时,我怎么能等到继续循环?

使用DOMContentLoaded事件检查HTML是否完全呈现:

<script>
  document.addEventListener('DOMContentLoaded', function(event) {
    alert('html loaded');
  });
</script>

在您的示例中,您可以只使用confirm来显示消息,当用户单击时,您可以使用下一个setTimeout来显示下一条消息。

但是,我认为这并不是你真正想要的。

有很多方法可以实现不影响html渲染的异步javascript,例如使用Web Worker,或者在setTimeout内部传递函数,这些方法可以使用闭包来帮助跟踪您所在的位置,但是,在一些处理和一些事件之后调用下一个setTimeout,因为这些方法将允许渲染继续进行,直到某些事件或时间发生。