等待promise和nested then完成

Wait until promise and nested thens are complete

本文关键字:then 完成 nested promise 等待      更新时间:2023-09-26

我从这样的函数返回一个承诺:

resultPromise = dgps.utils.save(opportunity, '/api/Opportunity/Save', opportunity.dirtyFlag).then(function () {
                self.checklist.saveChecklist(opportunity).then(function () {
                    self.competitor.save(opportunity.selectedCompetitor()).then(function ... etc.
return resultPromise;

假设上面的函数叫做save。

在调用函数中,我想等待整个链完成,然后做一些事情。我的代码是这样的:

var savePromise = self.save();
savePromise.then(function() {
    console.log('aftersave');
});

结果是'aftersave'被发送到控制台,而承诺链仍在运行。

我如何在整个链条完成后做某事?

承诺不是嵌套,而是链接。

resultPromise = dgps.utils.save(opportunity, '/api/Opportunity/Save', opportunity.dirtyFlag).then(function () {
                    return self.checklist.saveChecklist(opportunity);
                }).then(function () {
                    return self.competitor.save(opportunity.selectedCompetitor());
                }).then(function () {
                    // etc
                });
// return a promise which completes when the entire chain completes
return resultPromise;