Javascript AJAX每秒请求一次

Javascript AJAX每秒请求一次,javascript,ajax,Javascript,Ajax,更具体地说,我希望等待当前请求得到处理。处理完后,再做一个,在处理完前一个后等待一秒钟。在断开客户端连接的情况下,我希望继续发出请求,这样整个过程就不会停止 我下面的代码只是一次发出一堆请求: makeLiveRequest(testState) { var that = this; $.ajax({ headers: { 'X-CSRF-TOKEN': $('

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

我下面的代码只是一次发出一堆请求:

       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。有什么想法吗?

我建议您使用library,主要是forever方法


看一看

无法解决后续请求启动的确切原因(可能是其解决速度非常快) 但我注意到的一点是: 我们传递给
setTimeout
的回调在
window
对象的上下文中运行,因此
that=this
window
存储到
that
变量,并且不会获取相关数据,因此可能会出现您想要实现的逻辑故障

相反,你应该像这样打电话

setTimeout(即.makeLiveRequest.bind(那个,),5000)


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

如果客户端断开连接,则不再有客户端应用程序发出请求。所以我认为这是不可能的。不过,您的逻辑看起来不错,您确定
makeLiveRequest
方法吗?它不会作为对settimeout的回调。