代码之家  ›  专栏  ›  技术社区  ›  ArK Sheeba Nancy

实现睡眠函数javascript的最佳方法是什么?[复制品]

  •  3
  • ArK Sheeba Nancy  · 技术社区  · 14 年前

    这个问题已经有了答案:

    我都知道 setInterval setTimeout 但它不适合我的情况,因为我需要创建一个 img 以7秒为间隔的dom元素。

    • 图像计数没有预先定义(每天变化)。

    当我使用 设定间隔 我不能 完全地 达到一定限度后停止(每日计数)。[ clearInterval 仅清除迭代]

    当我使用 设置超时 在循环内部(每日计数),它从不延迟。所以唯一的可能就是睡眠功能。有人能为这种情况提供帮助吗?

    • 实现睡眠函数javascript的最佳方法是什么?
    3 回复  |  直到 11 年前
        1
  •  4
  •   Community CDub    8 年前

    实现睡眠函数javascript的最佳方法是什么?

    JavaScript代码必须是非阻塞的,因为任何阻塞的代码,比如等待发生什么事情的循环,都会使整个浏览器没有响应。Web浏览器中的javascript不仅运行在一个线程中,而且实际上与页面呈现和用户界面共享同一个线程。

    解决方案是使用计时器: setTimeout() setInterval() . 这些函数是非阻塞的;它们会立即返回。他们将一个回调函数附加到一个超时事件上,该事件将在将来某个时候被触发。javascript代码在 设置TimeTo() 函数被调用,因此用户仍然可以使用浏览器。然后,当触发超时时,将调用先前定义的回调,并解释代码。这是处理JavaScript中“延迟”的唯一实用方法。

    此外,这里还有一篇关于JavaScript计时器如何工作的有趣文章:


    既然你知道为什么阻塞睡眠功能不起作用了,那就来看看吧。 @Tomalak's link 对于一些解决方案,请使用 设置TimeTo() 集间Valk() .

        2
  •  2
  •   Community CDub    8 年前

    这很简单,以前也有人回答过。请参阅此问题的答案:

        3
  •  1
  •   Jon Hanna    14 年前

    你在抱怨setTimeout和setInterval,然后描述你是如何使用它们的。用户设置超时 不在循环中 如果还有更多的事情要做,让它调用另一个setTimeout,或者在达到维护的计数后使用setInterval和call clearInterval。