在获取请求中使用$ interval

时间:2018-07-02 05:06:53

标签: javascript angularjs promise momentjs intervals

我正在我的 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请求? 代码可以改进吗?

1 个答案:

答案 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
}