Как я могу вернуть обещание AngularJS из функции return?

0

У меня есть эта функция машинописного /Javascript:

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(wf) возвращает обещание и поэтому дает правильные типы возвращаемых данных, но если wordFormUpdate не вызывается, то он не возвращает обещание, и также существует вероятность того, что будет вызываться несколько wordFormUpdates, и я должен убедиться, что они все закончены перед возвращением.

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

Теги:

1 ответ

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;
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню