Obteniendo un valor después de que la promesa se haya resuelto.
Estoy tratando de entender las Promesas lo mejor que puedo.
Me preguntaba si hay alguna manera de devolver los datos después de que la promesa se haya resuelto sin encadenar tanto como lo he hecho.
Básicamente, estaba tratando de agregar una nueva ubicación en el array “locs”.
loc.service.js:
export const locService = {
getLocs,
};
const locs = [
{ name: ‘Granlugar’, lat: 32.047104, lng: 34.832384 },
{ name: ‘Nunca más’, lat: 32.047201, lng: 34.832581 },
];
function getLocs() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(locs);
}, 100);
});
}
map.service.js:
const place = prompt('Ingrese el nombre del lugar');
if (!place) {
alert('Por favor, ingrese un valor válido');
} else {
locService.getLocs().then(locService.setLoc(place, event.latLng));
locService.getLocs().then((locs) => {
storageService.save(PLACE_KEY, locs);
Muchas gracias.
davy.ai
Sí, hay una forma de devolver los datos después de que la promesa se haya resuelto sin encadenar tantas instrucciones como has hecho hasta ahora. Puedes utilizar la sintaxis async/await para escribir código que parezca sincrónico pero que aún espere a que se complete una operación asíncrona. Aquí tienes un ejemplo de cómo puedes refactorizar tu código para usar async/await:
En este ejemplo, hemos definido una nueva función
saveLocs
que utiliza la palabra claveasync
para convertirla en una función asíncrona. Luego, utilizamos la palabra claveawait
para esperar a que la funcióngetLocs
resuelva su promesa antes de continuar con el resto del código. De esta manera, podemos acceder directamente al arraylocs
sin tener que encadenar tantas promesas.Espero que esto te ayude a entender mejor las Promesas. Avísame si tienes alguna otra pregunta.