¡Tengo esta función que necesito para pasar de AngularJs a VueJs y me tiene perplejo! Cualquier ayuda sería apreciada :)
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;Lo que tengo en VueJs hasta ahora
let promises = []; for (let [name, details] of Object.entries(items)) { promises.push(new Promise((resolve) => {resolve(details)})); } return Promise.all(promises);¡Gracias!
No hay necesidad de una new Promise porque Promise.all permite valores que no son promesa.
Para una promesa que se resuelve con undefined (esto es lo que hace un diferido) cuando todos los valores de los objetos se liquidan (es decir, se resuelven o rechazan), es:
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 Si todos los valores no son promesas, no hay necesidad de Promise.all en absoluto.