标签: setinterval

如何使用未知ID清除Interval?

假设有人(邪恶)为我们设置了一个计时器setInterval,但是我们不知道它的ID(我们没有对该对象的引用,setInterval正在返回,也没有它的值)

(function(){
  setInterval(function(){console.log('pwned')},
              10000)
})();
Run Code Online (Sandbox Code Playgroud)

有办法,如何清除它?是否有可能以其他方式访问计时器?或者至少特别是浏览器/ javascript引擎?

大卫·弗拉纳根(David Flanagan)接触了他的大型JSTDG. setInterval() method, use in malicious code索引中的键指向

...某些浏览器会检测重复的对话框和长时间运行的脚本,并为用户提供停止它们的选项.但是恶意代码可以使用setInterval()等方法来加载CPU,也可以通过分配大量内存来攻击你的系统.Web浏览器没有一般的方法可以阻止这种火腿攻击.在实践中,这不是Web上的常见问题,因为没有人返回到从事此类脚本滥用的网站!

javascript timer setinterval clearinterval

22
推荐指数
3
解决办法
2万
查看次数

页面/浏览器失焦时暂停setInterval

我有一个简单的幻灯片,我在客户的主页上制作,使用setInterval来计算旋转时间.

为防止浏览器在页面未对焦(正在查看另一个选项卡或其他程序)时搞砸setInterval,我正在使用:

function onBlur() {
            clearInterval(play);
        };

        function onFocus() {

            mySlideRotateFunction();

        };

        if (/*@cc_on!@*/false) { 
            document.onfocusin = onFocus;
            document.onfocusout = onBlur;
        } else {
            window.onfocus = onFocus;
            window.onblur = onBlur;
        }
Run Code Online (Sandbox Code Playgroud)

mySlideRotateFunction设置setInterval并运行一些jQuery.虽然这在大多数情况下是有效的,但我发现,有时看起来似乎onBlur还没有运行,当我回到页面时,时间已经"积累"并且旋转变得疯狂.

我无法确定为什么有时会发生这种情况的原因,而不是其他原因.

我的问题 - 我的代码存在问题,当浏览器窗口失焦时,是否有人有更好的建议'暂停'setInterval?

谢谢

javascript jquery onblur setinterval

21
推荐指数
2
解决办法
1万
查看次数

Angular 2调用setInterval()undefined服务表单依赖注入

我想通过使用setInterval()每隔10分钟调用一个函数,并且在这个函数中我想使用从Angular 2的Dependency Injector获得的Service(称为auth),问题是控制台告诉我以下内容:

EXCEPTION:TypeError:this.auth未定义

  constructor(private auth: AuthService){
    setInterval(function(){ this.auth.refreshToken(); }, 1000 * 60 * 10);
  }
Run Code Online (Sandbox Code Playgroud)

setinterval typescript angular

21
推荐指数
2
解决办法
4万
查看次数

python中setInterval的等价物

我最近发布了一个关于如何推迟在Python中执行函数的问题(类似于Javascript setTimeout),结果证明这是一个简单的任务threading.Timer(好吧,只要函数不与其他代码共享状态,但这会在任何事件驱动的环境中产生问题).

现在我想做得更好并效仿setInterval.对于那些不熟悉Javascript的人,setInterval允许每隔x秒重复一次对函数的调用,而不会阻止其他代码的执行.我创建了这个示例装饰器:

import time, threading

def setInterval(interval, times = -1):
    # This will be the actual decorator,
    # with fixed interval and times parameter
    def outer_wrap(function):
        # This will be the function to be
        # called
        def wrap(*args, **kwargs):
            # This is another function to be executed
            # in a different thread to simulate setInterval
            def inner_wrap():
                i = 0
                while i != times:
                    time.sleep(interval)
                    function(*args, **kwargs)
                    i += 1 …
Run Code Online (Sandbox Code Playgroud)

python multithreading setinterval

20
推荐指数
1
解决办法
8863
查看次数

JavaScript中的setInterval()行为,0毫秒

在我的应用程序中,我发现了一些使用setInterval0毫秒的JavaScript代码,如下所示:

self.setInterval("myFunction()",0);
Run Code Online (Sandbox Code Playgroud)

显然,这对我来说似乎不是一个好主意.谁能告诉我setInterval这里的行为会是什么?("myFunction"对服务器进行AJAX调用)

我问这个是因为我的申请表现不正常.90%的情况下,应用程序运行正常,并且只对服务器进行一次调用.但有时会对服务器进行多次调用(到目前为止,最多只有48次调用),我几乎可以肯定这是这行代码的错误.

javascript setinterval

20
推荐指数
1
解决办法
2万
查看次数

在Node.js中设置计时器

我需要每24小时在Node.js中运行代码.我遇到了一个叫做的函数setTimeout.以下是我的代码段

var et = require('elementtree');
var XML = et.XML;
var ElementTree = et.ElementTree;
var element = et.Element;
var subElement = et.SubElement;
var data='<?xml version="1.0"?><entries><entry><TenantId>12345</TenantId><ServiceName>MaaS</ServiceName><ResourceID>enAAAA</ResourceID><UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID><EventType>create</EventType><category term="monitoring.entity.create"/><DataCenter>global</DataCenter><Region>global</Region><StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime><ResourceName>entity</ResourceName></entry><entry><TenantId>44445</TenantId><ServiceName>MaaS</ServiceName><ResourceID>enAAAA</ResourceID><UsageID>550e8400-e29b-41d4-a716-fffffffff000</UsageID><EventType>update</EventType><category term="monitoring.entity.update"/><DataCenter>global</DataCenter><Region>global</Region><StartTime>Sun Apr 29 2012 16:40:32 GMT-0700 (PDT)</StartTime><ResourceName>entity</ResourceName></entry></entries>'
etree = et.parse(data);
var t = process.hrtime();
// [ 1800216, 927643717 ]

setTimeout(function () {
  t = process.hrtime(t);
  // [ 1, 6962306 ]
  console.log(etree.findall('./entry/TenantId').length); // 2
  console.log('benchmark took %d seconds and %d nanoseconds', t[0], t[1]);
  //benchmark took 1 seconds and …
Run Code Online (Sandbox Code Playgroud)

settimeout setinterval node.js

20
推荐指数
1
解决办法
6万
查看次数

IE和setInterval()没有刷新/更新的问题

我正在使用JavaScript/Jquery使用数据库中的值进行页面自动更新,尽管它似乎没有在Internet Explorer中更新.它在FireFox和Chrome中运行良好.任何人都可以解释什么是错的吗?看起来IE只是显示页面的缓存版本.我怎样才能防止这种情况发生?谢谢.

function updateComm() {  
 var url="commandSys.php";  
 jQuery("#theElement").load(url);  
}

setInterval("updateComm()", 1000);
Run Code Online (Sandbox Code Playgroud)

javascript jquery internet-explorer refresh setinterval

19
推荐指数
1
解决办法
1万
查看次数

setInterval的最大延迟是多少?

我使用以下代码在Firefox 15和Chrome 21上遇到问题:

setInterval(function () { console.log('test') }, 300000000000)
Run Code Online (Sandbox Code Playgroud)

在两个浏览器上,该功能立即运行重复非常快.当然,这是一个很大的数字(代表从现在开始大约10年),但我不认为它被视为微小或负数.我没有看到任何文档中允许的最大延迟.有谁知道是否有标准的最大值,或者这只是浏览器有趣吗?

javascript setinterval

19
推荐指数
3
解决办法
9783
查看次数

setTimeout或setInterval或requestAnimationFrame

适用于HTML5游戏,适用于移动设备的画布动画.

我面临一些性能问题,这些问题会影响每个设备与其他设备之间的速度.

requestAnimationFrame根据设备速度加快游戏动画.
setInterval震惊了我,从设备到另一个设备有一个延迟.
setTimeout在画布上绘图也很慢.

曾有过移动HTML5游戏经验的人可以指导我在其他三个(或其他技术,如果可用的话)中使用最佳方式在不同的移动设备上稳定地开发动画?

html5 canvas settimeout setinterval requestanimationframe

19
推荐指数
2
解决办法
2万
查看次数

允许在nodejs中每毫秒运行一次setInterval

我有一个节点脚本,它应该利用单个节点进程可以获得的所有CPU资源.但我发现setInterval太慢了.

当然,我在文档中发现了这一点:

当延迟大于2147483647或小于1时,延迟将设置为1.

来源:https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args

现在我想知道是否有办法进一步减少限制,或者是否有可以使用的替代功能.

我不能只使用普通循环,因为还有其他需要同时运行的异步事件.

编辑:
再次:我不能只使用普通循环,因为还有其他需要同时运行的异步事件.我不确定为什么这么难理解.

正常循环正在运行时,您将阻止其他所有操作的执行.如果将循环放在另一个异步执行的函数中并不重要.

这是什么意思?

我们来看一些例子:

setInterval(()=>{console.log('a')},1000) // asynchronous thing that needs to run in the background

while (true) {
    // do whatever
}
Run Code Online (Sandbox Code Playgroud)

这段代码会做什么?它会阻止一切.console.log('a')不会连续执行.

setInterval(()=>{console.log('a')},1000) // asynchronous thing that needs to run in the background
setTimeout(()=>{
    while (true) {
        // do whatever
    }
}, 1)
Run Code Online (Sandbox Code Playgroud)

一旦while循环开始,这也将阻止间隔的执行.

javascript loops setinterval node.js

19
推荐指数
3
解决办法
1114
查看次数