2017-02-27 8 views
0

function validatePositionsを呼び出すことによってstartDateとendDateを検証する関数があります。初期化時にこの関数を呼び出すことがありますが、endDate呼び出しがstartDateよりも速く戻ります。2つの関数呼び出しをネストするAngularJS

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

Init関数は以下のようになります。

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(); 
    }); 
    } 
関連する問題