每秒AJAX请求

时间:2017-07-13 20:11:18

标签: javascript ajax

更具体地说,我想等到处理当前请求。一旦处理完毕,再做一个,在处理完前一个之后等待一秒钟。在客户端断开连接的情况下,我希望继续提出请求,因此整个过程不会停止。

下面的代码只会立即发出一堆请求:

       makeLiveRequest(testState) {
            var that = this;

            $.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                url: '/getData',
                type: 'GET',
                dataType: 'JSON',
                success: function(response) {
                    that.$set(that.state, 'testData', response);
                },
                complete: function (data) {
                    that.convertChartData();
                    setTimeout(that.makeLiveRequest, 5000);
                }
            });

            this.makeLiveChartRequest();
        },

在线查看,似乎不建议使用setInterval。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我建议你使用async库,主要是永远的方法。

看看here

答案 1 :(得分:1)

无法解决启动后续请求的确切原因(可能很快就会解决) 但我在这里可以注意到的一点是: 我们传递给setTimeout的回调在window对象的上下文中运行,所以你的 that = this会将window存储到that变量,并且不会获取相关数据,因此您可能会遇到逻辑上的失败。

而是像

一样打电话

setTimeout(that.makeLiveRequest.bind(that,<your arg value for testState>), 5000);

或将回调传递给setTimeout并从内部调用that.makeLiveRequest(arg)