我正在进行循环轮询,以等待事件,并且在无限循环中遇到了一些问题。这是代码:
var app = angular.module('mainApp', []);
app.factory('UserEvents', function ($http) {
var manageEvent = function (event) {
//do some work here
//and then, poll:
window.setTimeout(poll, 0);
}
var poll = function () {
$http({
method: 'GET',
url: '/get-events',
})
.success(function(event, status) {
manageEvent(event)
});
}
service = {
poll: poll,
}
return service
});
function mainController($scope, UserEvents) {
UserEvents.poll();
}
一旦收到第一个事件, $http.get 的成功方法就会在没有完成任何请求的情况下执行,这会创建循环。在某些时候它会神奇地停止,发送它的 GET 请求。就像函数'poll'使用之前的 $http.get 承诺,已经解决(???)
如果我在“manageEvent”函数中设置了 200 毫秒的超时,则不会出现问题,但这对我来说不是一个干净的解决方案。
有人可以向我解释这里发生了什么吗?
谢谢