Javascript 如何在Angular中使用$interval进行连续轮询?
在我的Angular代码中,我有一个长轮询代码,看起来像这样Javascript 如何在Angular中使用$interval进行连续轮询?,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,在我的Angular代码中,我有一个长轮询代码,看起来像这样 var request = function() { $http.post(url).then(function(res) { var shouldStop = handleData(res); if (!shouldStop()) { request() } }; } request(); 该函数在页面加载后立即被调用 然而,现在我正试图在
var request = function() {
$http.post(url).then(function(res) {
var shouldStop = handleData(res);
if (!shouldStop()) {
request()
}
};
}
request();
该函数在页面加载后立即被调用
然而,现在我正试图在量角器中设置测试,我得到了这个错误消息
失败:等待量角器与页面同步11秒后超时。请看
. 以下任务处于挂起状态:
在报告中,我读到以下内容:
在执行任何操作之前,量角器要求Angular等待页面同步。这意味着所有超时和http请求都已完成。如果您的应用程序连续轮询$timeout或$http,它将永远不会被注册为完全加载。您应该使用$interval服务(interval.js)来处理任何连续轮询的内容(在Angular 1.2rc3中引入)
如何编辑代码以使用
$interval
?我认为interval是窗口的一个角度包装。setInterval
,我不知道如何使用它进行长时间轮询。哦,文档中的$interval
属于$timeout
,而不是$http
好吧,我将扔掉Angular的
$http
,只使用获取
(附加$rootScope.$apply
和JSON反序列化)来做同样的事情哦,文档中的$interval
属于$timeout
,而不是$http
好吧,我将扔掉Angular的
$http
,只使用获取
(还有额外的$rootScope.$apply
和JSON反序列化)来做同样的事情您可能需要查看套接字io进行长时间轮询。不幸的是,服务器不是我们现在可以更改为websocket的东西。您可能需要查看套接字io以进行长时间轮询。不幸的是,服务器不是我们现在可以更改为websocket的东西