javascript - 防止 JavaScript 定时器重新进入

标签 javascript jquery timer setinterval

我的 ASP.NET MVC 页面使用 JavaScript/jQuery 每秒轮询我的数据库。

这是有效的,但我想确保,如果有延迟,我的计时器处理程序在返回之前不会被再次调用。

除了将计时器 ID 存储在全局变量中、清除我的处理程序中的计时器并在我的处理程序完成后重新启动它之外,还有其他技巧。

注意:我意识到每一秒似乎都很频繁,但这段代码在提交信用卡付款后正在轮询我的服务器。通常,它只会运行一秒钟左右,我不希望用户等待超过必要的时间。

最佳答案

每秒轮询?太重了!

除此之外,setTimeout 时您不会遇到此问题使用而不是 setInterval .后者确保一段代码在给定的时间间隔内运行 x 次,而前者确保至少有 x 毫秒的延迟。

function some_poller() {
    $.ajax({
       url: '/some_page',
       success: function() {
           setTimeout(some_poller, 1000);
       },
       error: function() { // Also retry when the request fails
           setTimeout(some_poller, 1000);
       }
    });
}

// Init somewhere
some_poller();

关于javascript - 防止 JavaScript 定时器重新进入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9967837/

相关文章:

c# - System.Environment.TickCount 的 WinRT 替换

javascript - 使用 AngularJS 和 Firebase 通过工厂保存项目会引发错误

javascript - Sails js 中未定义 "Invalid attributes sent to undefined"

javascript - 限制网站中视口(viewport)的宽度和高度

javascript - 如何在 PHP 中获取从 AJAX POST 发送的数据?

c++ - 如何使用事件循环管理线程?

ios - 如何在 swift iOS 上做一个简单的分分钟倒计时?

javascript - Angular : using transclude with ng-bind-html

javascript - 事件类不工作

javascript - 函数名中的数组