我正在尝试每隔5秒查询一次API。我用函数构建查询,然后使用setTimeout()
进行5秒重复。但是在我的代码中,另一段代码可以调用我的函数来更新查询字符串,我希望当前超时停止,然后开始新的超时。
(缩小代码,也使用AngularJS)
var timeout;
function queryApi(from, to) {
var query = '';
if(angular.isDefined(from) && angular.isDefined(to) {
// build custom query string
}
else {
// build default query
}
$http.get(query).success(function(res) {
$scope.data = res.data;
});
timeout = setTimeout(function() {
queryApi(from, to);
}, 5000);
}
function customQuery() {
// Do logic to get custom from & to dates
clearTimeout(timeout);
queryApi(from, to);
}
自定义查询被清除,新的自定义查询每5秒重复一次,但原始查询也会继续进行,为什么?
答案 0 :(得分:0)
如何在clearInterval(timeout)
函数中添加queryApi
呢?
var timeout;
function queryApi(from, to) {
console.log(from + to);
clearInterval(timeout);
timeout = setInterval(function() {
queryApi(from, to);
}, 1000);
}
queryApi(1,3);
queryApi(5,3);