Javascript 轮询器没有立即启动

Javascript poller does not start immediately

在我的 javascript 中,我定义了一个轮询器,以便每秒刷新一些内容。定义如下:

var poller = {
    // number of failed requests
    failed: 0,

    // starting interval - 1 seconds
    interval: 1000,

    // kicks off the setTimeout
    init: function() {
        setTimeout(
            $.proxy(this.getData, this), // ensures 'this' is the poller obj inside getData, not the window object
            this.interval
        );
    },

    // get AJAX data + respond to it
    getData: function() {
        var self = this;

        $.ajax({
            url: "api/view",
            success: function(response) {

                   // ....do something....

                    // recurse on success
                    self.init();
                }
            },

            error: $.proxy(self.errorHandler, self)
        });
    },

    // handle errors
    errorHandler: function() {
        if (++this.failed < 10) {

            this.interval += 1000;

            // recurse
            this.init();
        }
      }
    };

    poller.init();
});

问题是加载页面后它没有立即启动。有谁知道原因吗?非常感谢!

发生这种情况是因为第一次 $.ajax 调用的响应时间。在 localhost(开发环境)中调用服务时,调用有时可能会超过 40 秒。

此外,请查看是否有任何其他元素(例如您在特定页面中使用的 Highcharts)导致页面加载延迟。

您可以在浏览器的开发人员控制台中的“网络”下检查此行为。这是我的一个 $.ajax 调用的响应时间示例(我使用的是 Google Chrome):

我还怀疑当您将其移至生产环境时,您的响应时间会短得多,但您必须考虑到 1000 毫秒对您的服务器来说可能过于激进。