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 promise を使用していたかのように、既に解決されています (???)

「manageEvent」関数で 200 ミリ秒のタイムアウトを設定すると、問題は発生しませんが、私にとっては完全な解決策ではありません。

誰かがここで何が起こっているのか説明できますか?

ありがとう

4

0 に答える 0