Tengo problemas para devolver un objeto creado. El código se encuentra a continuación:
Dentro de Promise.allSettled, eventualmente obtengo los resultados que recorro y empujo cada matriz a un objeto (esto crea el objeto bien), cuando intento y devuelvo dicho objeto, está vacío.
Creo que es porque mi promesa no se ha cumplido, he intentado hacer:
Promise.resolve(returnedData) luego devolviéndolo, e incluso .then(resultados => resultados).
¿Qué me estoy perdiendo? Creo que he mirado esto durante tanto tiempo que hay algo claro como el día que me falta.
const getProductData = () => { debugger; const productIds = []; const returnedData = []; const customerLocation = getCustomerLocation(); productdataItems.forEach((product) => { productIds.push( product .querySelector('[data-test-id="product-card-code"]') .innerHTML.replace(/[^0-9]/g, ''), ); }); const items = productIds.map((product) => ({ productCode: product, quantity: 1, })); // Load in products for other steps const promises = []; productIds.forEach((sku) => { promises.push(getProduct(sku)); }); Promise.allSettled(promises).then((results) => { // Stock requires location data. if (customerLocation) { getEligibility(items, customerLocation).then((eligibility) => { getStock([customerLocation.collectionBranchId], productIds).then( (stock) => { results.forEach((result, i) => { if (result.value.product) { returnedData.push({ Product: result.value.product, Eligibility: eligibility[i], Stock: stock[i].quantity, ProductMarkup: productdataItems, PostCode: customerLocation.deliveryPostcode, }); } }); }, ); }); } }); return returnedData; };returnData está fuera de promise.allSettled. Por lo tanto, se devuelve antes de que se complete Promise.allSettled y, por lo tanto, está vacío.
Lo que debería estar haciendo es mover el retorno de returnData dentro de Promises
return Promise.allSettled(promises).then((results) => { ... ... return returnData; }getProductData debe ser un método asíncrono que devuelva un resultado prometido.