【发布时间】:2016-05-18 02:02:05
【问题描述】:
我已经在我的控制器中订阅了套接字事件。 当某些事件发生时,我需要从服务器获取一些数据(我尝试将 lb.get() 作为函数调用到某个工厂)。
$scope.counter = 0;
$scope.$on('lEvent', function (event, response) { // socket event
$scope.counter ++;
console.log('counter '+$scope.counter);
lb.get(response[0]).then(function(response){
var Item = {
id: response.id,
mime: response.mime,
name: response.name,
};
$scope.items.push(Item);
console.log("$scope.items"+$scope.items.length);
});
});
// here is a function in my factory
get: function(id) {
deferred = $q.defer();
$http({
method: "post",
url: url,
data: $.param({id: id}),
headers: header
})
.success(function (data) {
deferred.resolve(data);
})
.error(function (data) {
deferred.reject(data);
});
return deferred.promise;
}
想象一下,我有 5 个套接字事件,但函数 lb.get() 调用了 4(或 3)次而不是 5 次。您可以在控制台中看到调用的结果:
如您所见,函数 lb.get() 被调用了 4 次而不是 5 次。
我想,我需要一个请求队列之类的东西。
【问题讨论】:
标签: angularjs xmlhttprequest angular-promise