イベントを待つためにループポーリングを行っていますが、無限ループで問題が発生しています。コードは次のとおりです。
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 ミリ秒のタイムアウトを設定すると、問題は発生しませんが、私にとっては完全な解決策ではありません。
誰かがここで何が起こっているのか説明できますか?
ありがとう