Javascript中的window.setInterval不要多次运行一个函数

时间:2018-07-16 19:19:04

标签: javascript asp.net-mvc timer

例如,我想每5000毫秒更新一次局部视图。

我用下面的代码来做到这一点:

window.setInterval(function () {
    $.get("/Features/ShowDateTime").then(function (r) {
        $('#divDateTime').html(r);
    });
}, 5000)

此函数真正每隔5000毫秒运行一次(通过内部函数中的debugger命令检查),但ShowDateTime动作仅运行一次(通过在其控制器中的动作中使用断点检查)。 / p>

那是什么问题?

1 个答案:

答案 0 :(得分:0)

假设代码本身正在运行,则很可能在后续调用中将缓存数据取回。您需要缓存呼叫。一种简单的方法是将当前时间戳附加到URL的末尾:

window.setInterval(function () {
    $.get("/Features/ShowDateTime?" + Date.now()).then(function (r) {
        $('#divDateTime').html(r);
    });
}, 5000)

这会使您的浏览器每次都认为它是一个不同的URL,因此它不会缓存并返回相同的结果。