我知道setInterval
和setTimeout
函数,但它不适合我的情况,因为我需要在7秒的时间间隔内创建一个img
DOM元素。< / p>
当我使用setInterval
时,我无法完全在某个限制(每日计数)后停止它。 [clearInterval
仅清除迭代次数]
当我使用setTimeout
内部循环(每日计数)时,它永远不会延迟。所以唯一的可能是睡眠功能。任何人都可以帮助解决这个问题吗?
答案 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。