используя $ интервал внутри запроса get - PullRequest
0 голосов
/ 02 июля 2018

Я вызываю два API в моем init () , но во втором запросе 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 голосов
/ 02 июля 2018

Попробуйте так:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...