2016-05-16 3 views
0

У меня есть эта функция Машинопись/Javascript:Как я могу вернуть обещание AngularJS из функции возврата?

wordFormRowClicked = (wf): ng.IPromise<any> => { 
    var self = this; 
    if (this.wordFormIdentity != wf.wordFormIdentity) { 
     angular.forEach(self.word.wordForms, function (wf, key) { 
      var wordFormNgForm = 'wordFormNgForm_' + wf.wordFormIdentity; 
      if (self[wordFormNgForm].$pristine) { 
       ; 
      } else { 
       self.wordFormUpdate(wf).then((): any => { 
        self[wordFormNgForm].$setPristine(); 
       }); 
      } 
     }); 
     this.wordFormIdentity = wf.wordFormIdentity; 
    } 
} 

self.wordFormUpdate (ВФ) возвращает обещание и таким образом дает правильные возвращаемые типы, но если wordFormUpdate не вызывается, то он не возвращает обещание, а также есть возможность того, что будет вызываться несколько wordFormUpdates, и я должен убедиться, что они все закончили, прежде чем вернуться.

Может ли кто-нибудь предложить, как я могу это сделать?

ответ

3

Ваша функция должна возвращать wordFormRowClicked обещание:

var _this = this; 
wordFormRowClicked = function (wf) { 
    var self = _this; 
    var promises = []; 
    if (_this.wordFormIdentity != wf.wordFormIdentity) { 
     angular.forEach(self.word.wordForms, function (wf, key) { 
      var wordFormNgForm = 'wordFormNgForm_' + wf.wordFormIdentity; 
      if (self[wordFormNgForm].$pristine) { 
       ; 
      } 
      else { 
       var updatePromise = self.wordFormUpdate(wf).then(function() { 
        return self[wordFormNgForm].$setPristine(); 
       }); 
       promises.push(updatePromise); 
      } 
     }); 

    } 
    return $q.all(promises); 
}; 
wordFormRowClicked.then(function() { 
    //at this point all promises are resolved 
    this.wordFormIdentity = wf.wordFormIdentity; 
}); 
Смежные вопросы