2017-02-27 80 views
0

我有一個函數驗證startDate和endDate通過調用函數validatePositions和初始化我想調用此函數,但有時endDate調用返回比startDate更快,這是不正確的我的情況。AngularJS嵌套兩個函數調用

function validatePositions (date) { 
    validatePositions (date) 
      .then(function (response) { 
       if (response.data) { 
        hideWarning(); 
       } else if (!warningShowed()) { 
        displayWarningMessage(); 
       } 
    }); 
} 

初始化函數看起來像這樣:

function init() { 
     $q.all(validationService.validatePositions(startDate)).then(function() { 
      wizardService.validatePositions(endDate);}) 

    } 

我怎麼能窩此調用,使他們返回在同一時間或第一的startDate通話結束日期,然後打電話?

+0

這些函數怎麼樣hideWarning(); displayWarningMessage();? –

回答

0

不要在您的服務中處理您的承諾,而只是將其退回並在控制器中處理。喜歡的東西:

function validatePositions (date) { 
    return $resource(url, {date: date}).get() 
} 

,然後在你的控制器做:

init(){ 
    validateService.validatePositions(startDate).$promise.then(
     function(success){ 
      if(success.data){ 
       //do somethig 
       validateService.validatePositions(endDate).$promise.then(
        function(success){ 
        if(success.data){ 
        //do somethig 
        } 
        } 
       } 
      } 
     } 
     function(error){ 
      //do something 
     }); 
0

您應該返回承諾。像下面那樣更改您的代碼。

function validatePositions (date) { 
    return validatePositions(date).then(function (response) {     
        hideWarning(); 
      return response.data; 
    }),function(error) { 
     displayWarningMessage(); 
    }); 
    }