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

How can I run a final piece of code before a $q.all returns?

本文关键字:运行 最后 后一段 代码 返回 all      更新时间:2023-09-26

我有运行promise 的代码

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

返回之前在此函数内部。

有什么方法可以把它放进函数中吗?

只需添加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,这就是为什么我们要等到它们返回的承诺完成后再这样做。)