标签: setinterval

浏览器是否跟踪活动计时器ID?

浏览器是否跟踪活动setIntervalsetTimeoutID?或者这完全由开发人员来跟踪?

如果它确实跟踪它们,是否可以通过BOM访问?

javascript settimeout setinterval

17
推荐指数
1
解决办法
5248
查看次数

在没有setInterval的情况下检测类更改

我有一个div以编程方式添加的其他类.如何在不使用此setInterval实现的情况下检测类名更改?

setInterval(function() {
    var elem = document.getElementsByClassName('original')[0];
    if (elem.classList.contains("added")) { detected(); }
}, 5500);
Run Code Online (Sandbox Code Playgroud)

MutationObserver?

html javascript setinterval mutation-observers

16
推荐指数
1
解决办法
8308
查看次数

Angular2/4:刷新数据实时

我需要在一个间隔中刷新组件页面中的数据.此外,我需要在执行某些操作后刷新数据.我在服务中使用Obeservables,以便我可以在响应准备好时订阅.我正在推送对象的订阅,以便我可以清除它ngDestroy,我认为,我有以下方法来实现相同的目标.

方法1:setInterval

我已经设置了一个间隔ngOnInit,它将以相等的间隔调用refreshData.将使用clearIntervalin ngOnDestroy方法清除interval对象.

export class MyComponent implements OnInit, OnDestroy {
    private subscription: Subscription = new Subscription();

    data: any;
    interval: any;

    ngOnInit() {
        this.refreshData();
        this.interval = setInterval(() => { 
            this.refreshData(); 
        }, 5000);
    }

    ngOnDestroy() {
        this.subscription.unsubscribe();
        clearInterval(this.interval);
    }

    refreshData(){
        this.subscription.add(
            this.myService.getData()
                .subscribe(data => {
                    this.data = data;
                })
        );
    }

    doAction(){
        this.subscription.add(
            this.myService.doAction()
                .subscribe(result => {
                    if(result === true){
                        this.refreshData();
                    }
                })
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

Q1:在每次刷新调用时subscription,都会向对象添加一个订阅,这会增加内存使用量,如果用户保持页面打开一段时间,浏览器可能会崩溃吗?

方法2:Observable.timer

此方法使用将在刷新数据后创建的计时器.

export class MyComponent …
Run Code Online (Sandbox Code Playgroud)

memory-leaks subscriptions setinterval angular2-observables angular

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

如何正确使用setInterval和clearInterval在两个不同的函数之间切换?

为了练习,我试图显示一个从0 - 9递增,然后从9 - 0递减,并无限重复的数字.

我迄今似乎代码接近,但在第二次迭代中setInterval的我2个各自函数的调用countUp,并countDown似乎彼此发生冲突,因为显示的数字没有在预期的顺序计数......然后浏览器崩溃.

这是我的代码:

<!DOCTYPE html>
<html>
    <head>
        <title>Algorithm Test</title>
    </head>

    <body onload = "onloadFunctions();">
        <script type = "text/javascript">
            function onloadFunctions()
            {
                countUp();
                setInterval(countUp, 200);
            }

            var count = 0;
            function countUp()
            {
                document.getElementById("here").innerHTML = count;
                count++;

                if(count == 10)
                {
                    clearInterval(this);
                    countDown();
                    setInterval(countDown, 200);
                }
            }
            function countDown()
            {
                document.getElementById("here").innerHTML = count;
                count--;

                if(count == 0)
                {
                    clearInterval(this);
                    countUp();
                    setInterval(countUp, 200);
                }       
            }
        </script>

        From 0 - 9, up and …
Run Code Online (Sandbox Code Playgroud)

javascript animation counter setinterval clearinterval

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

等到setInterval()完成

我想在我的Javascript代码中添加一个小骰子滚动效果.我认为一个好方法是使用该setInterval()方法.我的想法是遵循代码(仅用于测试):

function roleDice() {
        var i = Math.floor((Math.random() * 25) + 5);   
        var j = i;
        var test = setInterval(function(){
            i--;
            document.getElementById("dice").src = "./images/dice/dice" + Math.floor((Math.random() * 6) + 1) + ".png";
            if(i < 1) {
                    clearInterval(test);
                }

            }, 50);     
    }
Run Code Online (Sandbox Code Playgroud)

现在我想等待setInterval,直到完成.所以我添加了一个setTimeout.

setTimeout(function(){alert("test")}, (j + 1) * 50);
Run Code Online (Sandbox Code Playgroud)

这段代码工作得很好.但在我的主代码中,该roleDice()函数返回一个值.现在我不知道我怎么能处理那个...我无法从那里回来setTimeout().如果我在函数末尾添加一个返回值,则返回将提升为快速.有没有人有想法,我怎么能解决这个问题?

编辑 嗯,好吧,我明白回调剂量是什么,我想我知道它是如何工作的,但我仍然有问题.我认为这更像是一个"界面"问题......我的代码:

function startAnimation(playername, callback) {
    var i = Math.floor((Math.random() * 25) + 5);
    var int = setInterval(function() {
        i--;
        var number = Math.floor((Math.random() * …
Run Code Online (Sandbox Code Playgroud)

javascript settimeout wait setinterval

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

如何在JavaScript中在1秒内完全执行1000次代码

n = 0;
var timer = setInterval(function() {
    if (n == 0) {
        console.log(new Date());
    }
    // execute some other code here
    n++;
    if (n == 1000) {
        clearInterval(timer);
        console.log(new Date());
    }
}, 1);
Run Code Online (Sandbox Code Playgroud)

此代码在大约3-4秒内执行,具体取决于机器和浏览器.如何让它在1秒内完成?

javascript loops setinterval

15
推荐指数
2
解决办法
1494
查看次数

Google Chrome扩展程序中的setInterval无效(仅触发一次)

就像标题所说的那样:setInterval只会触发一次回调.

manifest.json的:

{
    //...
    "content_scripts" : [{
        "js" : ["code.js"],
        //...
    }],
    //...
}
Run Code Online (Sandbox Code Playgroud)

code.js(示例):

setInterval(alert('only shown once'),2000);
Run Code Online (Sandbox Code Playgroud)

为什么,以及我如何解决它?代码在扩展之外(甚至在小书签中)也能很好地工作.

javascript asynchronous google-chrome setinterval google-chrome-extension

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

javascript setInterval:调用重叠吗?

假设我有setInterval(PostToServer, 1000);.PostToServer函数使ajax发布,可能需要超过一秒钟.那么接下来会发生什么:在第一次呼叫未完成或等待呼叫结束之前进行第二次呼叫,然后再制作新呼叫?

javascript setinterval

14
推荐指数
2
解决办法
4677
查看次数

使用moment.js和setInterval的动态日期和时间

我试图找出如何使用moment.js显示动态日期和时间.

显然我无法理解正确使用setInterval.

如果可能的话我宁愿不使用jQuery作为moment.js也不需要它.

这是我到目前为止所拥有的:http://jsfiddle.net/37fLF/2/.

$(document).ready(function () {
    var datetime = $('#datetime'),
        date = moment(new Date()),
        update = function(){
            datetime.html(date.format('dddd, MMMM Do YYYY, h:mm:ss a'));
        };
    update();
    setInterval(update, 1000);
});?
Run Code Online (Sandbox Code Playgroud)

javascript jquery setinterval momentjs

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

window.setInterval是否有最大延迟限制

今天我遇到了window.setInterval的一个有趣问题.当使用足够大的延迟(在这种情况下是30天内的毫秒数)时,它每秒执行一次而不是每30天执行一次.在最新的Chrome和Firefox中测试过.

jsFiddle链接

window.setInterval(function() {
    document.getElementById("first").innerHTML = new Date().toString();
}, 5000);
window.setInterval(function() {
    document.getElementById("second").innerHTML = new Date().toString();
}, 2592000000);
Run Code Online (Sandbox Code Playgroud)

我在setInterval中找不到关于延迟最大值的任何权威文档,MDN文档没有提到任何内容.其他在线资料表明,延迟应该能够容纳任何带符号的32位整数.

window.setInterval中的delay参数是否具有最大值,它是什么?

javascript setinterval

14
推荐指数
1
解决办法
1169
查看次数