javascript - 实现 sleep 功能 JavaScript 的最佳方式是什么?

标签 javascript sleep

<分区>

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

  • 图片数量未预先定义(每日变化)。

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

当我在循环(每日计数)内使用 setTimeout 时,它从不延迟。所以唯一的可能性是 sleep 功能。任何人都可以帮助解决这种情况吗?

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

最佳答案

What's the best way to implement a sleep function JavaScript?

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

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

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


既然您知道为什么阻塞 sleep 功能不起作用,请查看 @Tomalak's link对于一些使用 setTimeout()setInterval() 的解决方案。

关于javascript - 实现 sleep 功能 JavaScript 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845972/

相关文章:

sleep - 如何将 Android 应用程序安装为系统应用程序

java - 在异步方法中调用 Thread.sleep()

c++ - 无法在 Linux 上使用 Sleep() 编译 C++ 代码——要包含哪个库?

javascript - 在 Node.js 中导出 Mongoose 代码 - 将值从 Mongoose 方法传递给回调

javascript - D3 - 制作一个有错误的简单圆环图

Firefox 7 中的 Javascript 匿名函数

java - 使用从属线程唤醒 hibernate 的主线程

javascript - 在 JavaScript Canvas 中沿直线移动一个点

javascript - 使用 Ajax POST PHP 和 javascript 数据

Android 开发 : Thread. sleep just slow down game