我想知道如果這可能沒有使用WebSocket。我想要做的是,每當api數據發生變化時,它都會自動調用我所提供的服務來重新獲取這些值。我試圖用一個setInterval function
但這似乎是大材小用,也許容易,從長遠來看Angular 1.5 - 自動獲取API更新值
這裏的錯誤是我的服務代碼:
app.factory('ApiService',function($http,Config,$q){
\t
\t return {
\t \t login: function(payload){
\t \t \t var deferred = $q.defer();
\t \t \t $http({
\t \t \t \t method:'POST',
\t \t \t \t url:Config.baseUrl + '/api/login',
\t \t \t \t data:payload,
\t \t \t \t headers: {'Content-Type': 'application/json'},
\t \t \t }).then(function (result){
\t \t \t \t return deferred.resolve(result);
\t \t \t }, function (result){
\t \t \t \t return deferred.reject(result);
\t \t \t });
\t \t \t return deferred.promise;
\t \t },
\t \t dailyTransactions: function(apiToken){
\t \t \t var deferred = $q.defer();
\t \t \t $http({
\t \t \t \t method:'GET',
\t \t \t \t url:Config.baseUrl + '/api/client/transaction/total/?token='+apiToken,
\t \t \t \t headers: {
\t \t \t \t \t 'Content-Type': 'application/json',
\t \t \t \t \t 'Authorization':'token '+apiToken
\t \t \t \t },
\t \t \t }).then(function (result){
\t \t \t \t return deferred.resolve(result);
\t \t \t }, function (result){
\t \t \t \t return deferred.reject(result);
\t \t \t });
\t \t \t return deferred.promise;
\t \t },
});
和我的控制器代碼:
app.controller('MainCtrl', function($state,$scope,$position,$rootScope,$timeout,ApiService,toastr) {
console.log($state);
$rootScope.user = localStorage.getItem('username');
var payload = localStorage.getItem('api_Key');
$scope.showDailyTransactions = function(){
ApiService.dailyTransactions(payload).then(function(response){
$scope.apiData ={
"total_sent":response.data.total_sent,
"total_success":response.data.total_success,
"total_pending_failed":response.data.total_pending_failed
};
$scope.daily = $scope.apiData;
}, function(error) {
console.log(error);
});
}
$timeout($scope.showDailyTransactions,5000);
});
你會如何知道數據已經改變?沒有輪詢或websocket或服務器端事件沒有辦法。 – dfsq
api是我們正在使用的服務,好點的生病了看你的建議。現在,我能夠監視它是否發生了變化的唯一方式是我使用該服務時。 –