- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力想出网络应用程序开发中需要使用 setInterval
的用例。
setInterval
的“危险”在于,如果回调在分配的时间间隔内未完成,它只是将回调排队。
此外,setInterval
的行为可以通过 setTimeout
或 requestAnimationFrame
来模拟,而不会出现这种“危险”。
鉴于此,有人可以为我提供一个用例,其中 setInterval
是更好/更合适的选项吗?
编辑:
我想我会记下我的发现。
setInterval
是一种以均匀间隔运行某些内容的简单方法。间隔主要是相当准确的,但如果事件循环被阻塞,那么它们可能完全不准确。
var x = 0;
setInterval(function() {
waitBlocking(5000);
document.write(x++);
},100);
function waitBlocking(ms) {
var start = Date.now();
while((Date.now() - start) < ms) {}
}
据我所知,setInterval
不是很有用,如果你想均匀分布间隔回调调用(见上文),但如果你想要一种方便的方式在一个时期,分布在尽可能接近他们应该运行的时间范围内。这似乎是一个相当狭窄的用例。
我确定我遗漏了什么。
编辑 2:
这基本上是 JS 可以实现的时钟的最佳近似值,所以我猜 setInterval
是“时钟计时器”。据推测,这在需要简单时钟的应用程序中很有用。
最佳答案
setTnterval
适用的用例是您希望在准确的时间执行函数。 setInterval
和setTimeout
有字幕差异。 setInterval
从前一个 setInterval
触发的时间开始延迟后执行它的功能。setInterval
也不是封闭的,所以不用担心闭包和内存泄漏。但是可以找到更多详细信息 here
下面是典型的setInterval
函数的代码
var intervalID = window.setInterval(myCallback, 500);
function myCallback() {
// Your code here
}
要使用 setTimeout 实现相同的功能,您必须创建一个可以创建闭包的递归,然后内存泄漏问题就会出现,如下所示。
function startTimer() {
var count = [1,2,3,4,5,6,7,8,9,0]
setTimeout(function() {
//do some stuff
count.push(100);//you have just create a closure
//and all the problems that is associated with it
startTimer();//this is where the recursion happens
}, 1000);
}
关于javascript - 无法使用 setTimeout 或 RAF 实现的 setInterval 用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37930813/
如果我针对文件创建 java 随机访问文件对象。文件重命名后会发生什么? 案例1。假设我根据 test.log 创建了一个 RAF 对象。然后我通过执行类似的操作重命名 test.log -> tes
我偶然发现了一个article - requestAnimationFrame Scheduling For Nerds由保罗·爱尔兰发布。 我通读了一遍,然后提出了一个问题:有什么方法可以安排一个任
我正在创建一个为一系列图像设置动画的指令(允许播放、停止和步进)。为了获得最佳性能,我想利用 requestAnimationFrame。我注意到 Angular 源中有一个 requestAnima
我想从java中找到raf.seek(pos)方法的模拟。需要在文本文件(书页)中逐页查找。 val raf = RandomAccessFile(file, "r") raf.seek(pageNu
根据以下帖子,我从使用 setTimeout 改为使用 requestAnimationFrame: http://paulirish.com/2011/requestanimationframe-f
我目前正在尝试学习如何使用 requestAnimationFrame 制作动画,但在弄清楚如何在 SVG 圆的圆周上从点到点制作动画时遇到一些问题。我能够找到目标周围的适当点,但是当我执行函数时,它
我正在努力想出网络应用程序开发中需要使用 setInterval 的用例。 setInterval 的“危险”在于,如果回调在分配的时间间隔内未完成,它只是将回调排队。 此外,setInterval
代码: var mc = new MessageChannel(); var count = 1; var t = +new Date; console.log('start') Promise.re
我的网站出现异常行为。我最近在网站管理员工具上发现,它发现我网站上的许多网页都出现抓取错误 404。我无法理解这些页面是如何创建的,因为所有 404 页面最后都包含这几个字 wrap-function
我正尝试在 Roku 上为我们的 VoD 实现技巧模式。我在这里遵循了他们的 HLS 指南: https://developer.roku.com/en-gb/docs/developer-progr
有代码: angular.module('myApp', ['ngMock']); 加载 ngMock 时出现此类错误。未捕获的类型错误:$$rAF.throttle 不是函数 最佳答案 问题似乎来自
我的代码直到第四天都没有问题,现在这是我尝试使用 SeatMap 端点测试我的应用程序时得到的唯一响应,https://api.test.sabre.com/v3.0.0/book/flights/s
我是一名优秀的程序员,十分优秀!