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的回调。