我正在我的 init()中调用两个API,但是在第二个get请求上,我希望它继续调用它直到满足特定条件(在我的情况下,通过了2个日期范围) 。条件是,在日期差小于15天之前,请在停止API调用后继续调用API。
我的代码是这样的
var startDate=moment(new Date()).format("YYYY-MM-DD");
var endDate;
$scope.init=function(){
firstGetFunction().then(function(response1){
let i=0;
$interval(function() {
endDate=moment(startDate).add(i++,'days').format("YYYY-MM-DD");
if(new moment.duration(new Date(endDate)-new Date(startDate)).asDays()<=15){
secondGetFunction(startDate,endDate).then(function(response2){
$scope.obj1=response1;
$scope.obj2=response2;
});//2nd API call ends
}//if diff is less than 15 days
else{
return;
}
},100);//$interval ends
});//1st API call ends
}
我面临的问题是我无法退出$interval
。
有没有更好的方法来处理此Get请求?
代码可以改进吗?
答案 0 :(得分:1)
尝试这种方式:
var startDate=moment(new Date()).format("YYYY-MM-DD");
var endDate;
$scope.init=function(){
firstGetFunction().then(function(response1){
let i=0;
let timer = $interval(function() {
endDate=moment(startDate).add(i++,'days').format("YYYY-MM-DD");
if(new moment.duration(new Date(endDate)-new Date(startDate)).asDays()<=15){
secondGetFunction(startDate,endDate).then(function(response2){
$scope.obj1=response1;
$scope.obj2=response2;
});//2nd API call ends
}//if diff is less than 15 days
else{
$interval.cancel(timer);
}
},100);//$interval ends
});//1st API call ends
}