Javascript http请求每500毫秒一次,直到请求完成
我正在寻求每隔500毫秒不断请求服务器。 我想先申请,如果500毫秒后申请仍未完成,我想再次申请。然后再次等待500毫秒,检查是否不完整。我想重复这个过程,直到请求完成 现在,我的请求如下所示:Javascript http请求每500毫秒一次,直到请求完成,javascript,angularjs,http,settimeout,Javascript,Angularjs,Http,Settimeout,我正在寻求每隔500毫秒不断请求服务器。 我想先申请,如果500毫秒后申请仍未完成,我想再次申请。然后再次等待500毫秒,检查是否不完整。我想重复这个过程,直到请求完成 现在,我的请求如下所示: $http({ method: method, url:baseUrl, headers: { 'Content-Type' : 'application/json; charset=utf-8', 'Data-Type': 'json'
$http({
method: method,
url:baseUrl,
headers: {
'Content-Type' : 'application/json; charset=utf-8',
'Data-Type': 'json'
},
data: resultService.sendData(true),
cache:false
})
.success(function(data,status,headers,config){ // accepts more parameters
$timeout(function(){
resultService.activeSearch=false;
$timeout(function(){
request= $filter('orderBy')(data,['price','id']);
},0);
},1000);
})
.error(function(){
resultService.activeSearch=false;
function(){
request={error:1};
};
});
};
我想用这样的东西
(function tick(){
$http({
method: method,
url:baseUrl,
headers: {
'Content-Type' : 'application/json; charset=utf-8',
'Data-Type': 'json'
},
data: resultService.sendData(true),
cache:false
})
.success(function(data,status,headers,config){ // accepts more parameters
request=data;
$timeout(tick,500);
$timeout(
function(){resultService.activeSearch=false;
},1000);
})
.error(function(){
$timeout(tick,500);
resultService.activeSearch=false;
function(){
request={error:1};
};
});
})();
这不符合预期。我哪里错了?使用$http的超时参数
函数MyCtrl($scope,$http){
$scope.logs=''
//将尝试每隔500毫秒获取targetUrl,然后使用数据调用successCallback
函数tryToGet(targetUrl,successCallback){
$scope.logs+='\n新尝试\n';
//使用timeout参数尝试get
var trunt=$http.get(targetUrl,{timeout:500})
//出现错误时,请重试
尝试。错误(函数(){
tryToGet(targetUrl,successCallback);
});
//成功后,执行回调
尝试成功(successCallback);
}
功能whenOk(数据){
$scope.logs+=数据
}
tryToGet('http://google.com",whenOk)
}
此代码的行为是什么?500毫秒后似乎根本没有发出新的请求。是不是因为我在500毫秒后没有获得错误,因此没有提出新的请求?在我看来,在进入之前,我必须在其他地方启动勾号功能。成功吗?还有一个$interval服务,看起来不错。我现在将设置后端,看看它是否能像我希望的那样运行。但是测试效果很好。谷歌页面没有超时,我没有找到一个页面无法回答。如果页面关闭(404错误),它将以最高速度链接请求,因此可能需要在重试之前添加一个超时。是否必须精确为500毫秒,或者超时错误可以精确为1000毫秒,其他错误可以精确为500毫秒?