实现睡眠功能JavaScript的最佳方法是什么?

时间:2010-10-02 13:40:07

标签: javascript sleep

我知道setIntervalsetTimeout函数,但它不适合我的情况,因为我需要在7秒的时间间隔内创建一个img DOM元素。< / p>

  • 图像数量未预定义(每天不同)。

当我使用setInterval时,我无法完全在某个限制(每日计数)后停止它。 [clearInterval仅清除迭代次数]

当我使用setTimeout内部循环(每日计数)时,它永远不会延迟。所以唯一的可能是睡眠功能。任何人都可以帮助解决这个问题吗?

  • 实现睡眠功能JavaScript的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

  

实现睡眠功能JavaScript的最佳方法是什么?

JavaScript代码必须是非阻塞的,因为任何阻塞的代码(如等待某事发生的循环)都会使整个浏览器无响应。 Web浏览器中的JavaScript不仅在单个线程中运行,而且实际上与页面呈现和UI共享相同的线程。

解决方案是使用计时器:setTimeout()setInterval()。这些功能是非阻塞的;他们马上回来。它们将回调函数附加到将在未来某个时间触发的超时事件。 JavaScript代码在调用setTimeout()函数后很快终止执行,因此用户仍然可以使用浏览器。然后,当触发超时时,将调用先前定义的回调,并解释您的代码。这是处理JavaScript中“延迟”的唯一实用方法。

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


既然你知道为什么阻止睡眠功能不起作用,请使用setTimeout()setInterval()查看@Tomalak's link一些解决方案。

答案 1 :(得分:2)

这很简单,之前也得到了回答。看看这个问题的答案:

答案 2 :(得分:1)

你抱怨setTimeout和setInterval,但后来描述了你如何使用它们。用户setTimeout 不在循环中,如果还有更多事情要让它调用另一个setTimeout,或者在达到维护计数后使用setInterval并调用clearInterval。