将 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
。
我有这个功能,我需要从 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
。