【发布时间】:2015-02-20 09:28:32
【问题描述】:
我正在寻求每 500 毫秒以恒定请求请求服务器。 我想首先请求,如果请求在 500ms 后未完成,我想再次发出相同的请求。然后再次等待 500ms 并检查是否不完整。我想重复这个过程,直到请求完成。
现在,我的请求如下所示:
$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};
};
});
})();
这不能按预期工作。我哪里错了?
【问题讨论】:
-
这段代码的行为是什么?
-
似乎500ms后根本没有发出新请求。是不是因为我在 500 毫秒后没有收到错误,因此没有发出新的请求?在我看来,在进入 .success 之前,我必须在其他地方启动 tick 功能?
-
还有$interval服务docs.angularjs.org/api/ng/service/$interval
标签: javascript angularjs http settimeout