如何在$ q.all返回之前运行最后一段代码?

时间:2016-08-02 08:45:16

标签: javascript angularjs typescript

我有运行promises的代码

phrasesUpdate = (): ng.IPromise<any> => {
    var self = this;
    var promises = [];
    angular.forEach(self.phrases, (ph, key) => {
        if (ph.statusId == Status.Dirty) {
            ph.createdDate
                ? promises.push(self.phraseUpdateSubmit(ph, key))
                : promises.push(self.phraseAddSubmit(ph, key));
        }
    });
    return self.$q.all(promises);
};

此代码有效,但我想运行此代码:

 self.phrases.forEach(function (phrase, index) { phrase.index = index; })
返回之前

在此函数内部。

我是否有某种方法可以将其融入到该功能中?

1 个答案:

答案 0 :(得分:2)

只需添加then

return self.$q.all(promises).then(result => {
    // Your last thing goes here
    return result;
});

重新编辑您的问题:我相信这是您将该行集成到代码中的方式:

return self.$q.all(promises).then(result => {
    self.phrases.forEach(function (phrase, index) { phrase.index = index; });
    return result;
});

(我在此假设phraseUpdateSubmitphraseAddSubmit修改了self.phrases,这就是为什么我们等待这样做直到他们返回完成的承诺之后。)