将 Promise.all 功能从 AngularJs 移植到 VueJs

Porting Promise.all functionality from AngularJs to VueJs

我有这个功能,我需要从 AngularJs 转移到 VueJs,这让我很困惑!任何帮助将不胜感激:)

items = {
    one: {...details here...},
    two: {},
}

AngularJs

var promises = [];
var deferred = $q.defer();

angular.forEach(items, function(details) {
    promises.push(details.promise);
});

$q.all(promises).finally(function() {
    deferred.resolve();
});

return deferred.promise;

到目前为止我在 VueJs 中拥有的东西

let promises = [];

for (let [name, details] of Object.entries(items)) {
    promises.push(new Promise((resolve) => {resolve(details)}));
}

return Promise.all(promises);

谢谢!

不需要 new Promise 因为 Promise.all 允许非承诺值。

对于在所有对象值都已解决(即解决或拒绝)时使用 undefined 解决的承诺(这就是延迟所做的),它是:

Promise.all(Objects.values(items).map(({ promise }) => promise))
.then(() => {}) // if it's necessary to resolve with undefined
.catch(() => {}) // if it's necessary to not reject

如果所有值都不是承诺,则根本不需要 Promise.all