更具体地说,我想等到处理当前请求。一旦处理完毕,再做一个,在处理完前一个之后等待一秒钟。在客户端断开连接的情况下,我希望继续提出请求,因此整个过程不会停止。
下面的代码只会立即发出一堆请求:
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。有什么想法吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
无法解决启动后续请求的确切原因(可能很快就会解决)
但我在这里可以注意到的一点是:
我们传递给setTimeout
的回调在window
对象的上下文中运行,所以你的
that = this
会将window
存储到that
变量,并且不会获取相关数据,因此您可能会遇到逻辑上的失败。
而是像
一样打电话 setTimeout(that.makeLiveRequest.bind(that,<your arg value for testState>), 5000);
或将回调传递给setTimeout
并从内部调用that.makeLiveRequest(arg)
。