奇怪的〜$ http.get的无限循环

时间:2013-07-07 09:14:10

标签: javascript angularjs

我正在进行循环轮询,等待事件,并且我遇到了无限循环的麻烦。这是代码:

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的超时时间,则不会出现问题,但这对我来说不是一个干净的解决方案。

有人可以向我解释这里发生了什么吗?

由于

0 个答案:

没有答案