AngularJS öğrenmeye çalışıyorum. Her saniye yeni veri alma girişimim işe yaradı:
'use strict';
function dataCtrl($scope, $http, $timeout) {
$scope.data = [];
(function tick() {
$http.get('api/changingData').success(function (data) {
$scope.data = data;
$timeout(tick, 1000);
});
})();
};
İş parçacığı 5 saniye boyunca uyuyarak yavaş bir sunucuyu simüle ettiğimde, kullanıcı arayüzünü güncellemeden ve başka bir zaman aşımı ayarlamadan önce yanıtı bekler. Sorun, modül oluşturmak için Açısal modülleri ve DI'yi kullanmak için yukarıdakileri yeniden yazdığımda:
'use strict';
angular.module('datacat', ['dataServices']);
angular.module('dataServices', ['ngResource']).
factory('Data', function ($resource) {
return $resource('api/changingData', {}, {
query: { method: 'GET', params: {}, isArray: true }
});
});
function dataCtrl($scope, $timeout, Data) {
$scope.data = [];
(function tick() {
$scope.data = Data.query();
$timeout(tick, 1000);
})();
};
Bu yalnızca sunucu yanıtı hızlıysa çalışır. Herhangi bir gecikme olursa, yanıt beklemeden saniyede 1 istek gönderir ve kullanıcı arayüzünü temizler gibi görünür. Bir geri arama işlevi kullanmam gerektiğini düşünüyorum. Denedim:
var x = Data.get({}, function () { });
ancak bir hata aldım: "Hata: destination.push bir işlev değil" Bu, $ resource belgelerine dayanıyordu ancak oradaki örnekleri gerçekten anlamadım.
İkinci yaklaşımı nasıl çalıştırırım?