的Plunkr
http://plnkr.co/edit/6kpLplq5hy9e2sXMaEsG?p=preview
的HTML
<!DOCTYPE html>
<html>
<head>
<script data-require="[email protected]*" data-semver="1.2.15" src="http://code.angularjs.org/1.2.15/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="myApp" ng-controller="MyCtrl">
{{data.theDate}}
</body>
</html>
的JS
angular.module("myApp", []).service("UpdatingService", function($http, $timeout){
var service = {
data:{},
getData:function(){
$http.get("someData.json").success(function(result){
angular.copy(result, service.data)
service.data.theDate+=" "+new Date();
});
}
};
cancelRefresh = $timeout(function myFunction() {
service.getData();
cancelRefresh = $timeout(myFunction, 1000);
},1000);
return service;
}).controller("MyCtrl", function($scope, UpdatingService){
$scope.data = UpdatingService.data;
});
所以我告訴我怎麼會一般做這個上面。首先創建一個處理請求和存儲數據的服務。然後製造一個控制器並注入所述服務。在服務內部從角度注入$ http和$ timeout服務,這樣我們就可以創建ajax請求並重復請求,從而輪詢服務器。由於沒有真正的setInterval,$ timeout回調會創建一個新的$ timeout來繼續週期,如果您需要在下面的鏈接中的某些點詳細信息處停止計時器,則可以使用cancelRefresh。
using setInterval in angularjs factory
不知道你的「模網絡延遲和喜歡」的意思是,你只是在尋找如何使從角的異步調用的例子嗎? – shaunhusain
重複異步調用,是的。在真實的網絡中,網絡延遲和其他條件可能會導致應用程序的行爲顯示服務器時間;我基本上試圖說,「忽略其他細微差別,如何編寫一個會消耗CGI腳本輸出並顯示服務器時間的AngularJS Comet?」 – JonathanHayward