我正在进行循环轮询,等待事件,并且我遇到了无限循环的麻烦。这是代码:
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'函数中设置200ms的超时时间,则不会出现问题,但这对我来说不是一个干净的解决方案。
有人可以向我解释这里发生了什么吗?
由于