在我的Angular代码中,我有一个长轮询的代码,看起来像这样
var request = function() {
$http.post(url).then(function(res) {
var shouldStop = handleData(res);
if (!shouldStop()) {
request()
}
};
}
request();
在页面加载后立即调用该函数。
但是,现在我正在尝试在Protractor中设置测试,我收到了此错误消息
失败:等待Protractor在11秒后与页面同步超时。请参阅 https://github.com/angular/protractor/blob/master/docs/faq.md。以下任务尚未完成:
在docs中,我阅读了以下内容:
在执行任何操作之前,Protractor要求Angular等待页面同步。这意味着所有超时和http请求都已完成。如果您的应用程序不断轮询$ timeout或$ http,它将永远不会被注册为完全加载。你应该使用$ interval服务(interval.js)来连续轮询(在Angular 1.2rc3中引入)。
如何修改代码以使用$interval
?我认为该区间是window.setInterval
的角度包装器,我不知道如何使用它来进行长轮询。
答案 0 :(得分:0)
哦,文档中的$interval
内容属于$timeout
,而不属于$http
。
好吧,我会抛弃Angular的$http
,只使用fetch
(加上$rootScope.$apply
和JSON反序列化)来做同样的事情