【发布时间】:2014-10-11 06:08:56
【问题描述】:
这里有角菜鸟。我正在构建一个需要每秒轮询一个 url 并持久存储该数据的应用程序,因为它需要由多个视图/控制器访问。
我所做的处理是将我的 http 请求放入工厂,并通过工厂中的功能将数据提供给控制器。我现在遇到的问题是工厂函数在 http 请求之前被调用,导致我的应用程序出错。
代码如下:
App.factory('metrics', function($http){
var service;
var users = [{laps:[]}];
var updateMetrics = function(){
//updates the users array in the factory
};
$http.get('data.csv').success(function(data) {
var temp_array = data.split(" ");
updateMetrics(0, temp_array);
});
service.lastLapInfo = function(){
var lastlap = [];
for (var i=0; i<users.length;i++)
{
var lap = users[i].laps[users[i].laps.length-1];
lastlap.push(lap);
}
return lastlap;
};
return service;
});
App.controller('mainController', function($scope, $http, metrics) {
$scope.users=metrics.lastLapInfo();
});
lastLapInfo() 在导致错误的 http 请求之前被调用,因为数组中没有数据。有什么想法吗?
另外 - 如果我通常采用错误的方式来满足我的用例(例如,我应该使用其他东西而不是工厂),请告诉我!
【问题讨论】:
-
当您实际拥有数据时,在成功回调中执行该操作。
标签: javascript angularjs http polling