setInterval与jquery.idle

时间:2018-09-26 20:52:15

标签: javascript jquery

我不知道该脚本中缺少什么-它应该使用jQuery库'idle'来检测没有活动-在这种情况下,应该停止时间并且不向服务器发出请求。

“空闲”事件会触发(与活动事件一样),但是用于调用AJAX请求的计时器永远不会停止-WTF>?!?!

```

    <script>
        var minTaskUpdateInterval = 1000 * 30; // 30 second intervals 

        function initTaskTimeTracking()
        {
            Ext.Ajax.request({
                url: 'service/application/task/updatetimer',
                params: {interval: minTaskUpdateInterval}
            });
        }

        var intervalId = 0;

        idle({
            idle: 10000, // NOTE: IDLE notification when
            onIdle: function () {
                clearInterval(intervalId);
                console.log('Idle');
            },
            onActive: function () {
                intervalId = setInterval(initTaskTimeTracking, 5000);
                console.log('Active');
            }
        }).start();
    </script>

```

1 个答案:

答案 0 :(得分:1)

我的猜测是onActive被多次调用,因此您可以运行多个计时器。因此,请在重新运行之前检测是否有间隔。

 var intervalId;

    idle({
        idle: 10000, // NOTE: IDLE notification when
        onIdle: function () {
            clearInterval(intervalId);
            intervalId = false;
            console.log('Idle');
        },
        onActive: function () {
            if (!intervalId) {
              intervalId = setInterval(initTaskTimeTracking, 5000);
            }
            console.log('Active');
        }
    }).start();