0

我正在进行循环轮询,以等待事件,并且在无限循环中遇到了一些问题。这是代码:

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

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

谢谢

4

0 回答 0