2014-06-12 34 views
0

我使用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

看看的this question答案。事件表明將爲實施提供基礎。

我的建議是使用imageonload指令作爲開始。而不是alert - 事情,用圖像的加載狀態更新一個變量。然後,在您的$timeout處理程序中,檢查此狀態變量,如果狀態仍在加載,則不要調用setImagePath()。您可能還需要更新setImagePath()中的狀態變量。