使用Angular' s超时刷新图像时,取消新请求而不是当前加载请求

时间:2014-06-12 12:28:36

标签: javascript angularjs

我正在使用Angular的超时以用户指定的间隔刷新图像的内容。当该间隔太低而无法加载图像(例如1秒)时,每个后续请求都会取消前一个请求,导致图像永远不会刷新。

Chrome Dev Tools network tab showing canceled requests

而不是这种行为,我想要完成当前请求,以及后续请求被取消,直到请求冲突时完成请求。我怎么能这样做?

处理刷新的代码:

$scope.setImagePath = function() {
  $scope.imagePath = $scope.camera.endpoint + '?decache=' + Math.random();
};
$scope.setImagePath();

$scope.refreshOnInterval = function() {
  $timeout(function() {
    $scope.setImagePath();
    $scope.refreshOnInterval();
  }, $scope.refresh);
};
$scope.refreshOnInterval();

1 个答案:

答案 0 :(得分:1)

看一下this question的答案。该事件表明将为实施提供基础。

我的建议是使用imageonload指令作为开头。而不是alert某事物,用图像的加载状态更新变量。然后,在$timeout处理程序中,检查此状态变量,如果状态仍在加载,则不要调用setImagePath()。您可能还需要在setImagePath()中更新状态变量。