我在 SO 和谷歌上都看过这里,但我正在努力寻找任何解决方案。
我有以下函数,当我不使用该setTimeout()
函数而只调用我的轮询函数时,它按预期工作。但是当我尝试将我的轮询函数包装在 asetTimeout()
中时,它会工作一次,然后除非页面被刷新,否则不会再次被调用,我已经在 GET 请求中包含了一个时间戳以防止使用缓存的响应,所以我不认为这就是问题所在。我也检查过,这种行为发生在 IE9、Firefox 和 Chrome 中。
$scope.progressPolling = function () {
var time = new Date().toString();
console.log("time :" + time);
$http.get('pollprogress?time=' + time + '&id=' + $scope.jobID)
.success(function (data, status, headers, config) {
var percent = data.percentage;
if (parseInt($scope.progress) < 100) {
if (percent <= 100) {
$scope.progress = percent;
}
setTimeout(function() {
if (parseInt($scope.progress) < 100) {
temp = parseInt($scope.progress) + 1;
$scope.progressPolling();
};
}, 5000);
}
})
.error(function (data, status, headers, config) {
console.log("Error updating Progress: " + data);
});
}