Retornando posiciones utilizando axios.
Estoy intentando iterar a través de una matriz de objetos y llamar a mi API usando el valor del objeto. Luego, quiero mostrar el resultado en la consola. Mi API está devolviendo los valores necesarios, pero la salida es la siguiente:
[ Promise { <pendiente> }, Promise { <pendiente> } ]
Mi función:
async function geoEncode() {
const clients = [
{
nome: "John",
address: "Jardim Planalto Sinibaldo Cassino 33",
},
{
nome: "Joseph",
address: "R. Afrizia Martins Sanacato - Jardim Natalia",
},
];
const baseUrl = "https://api.tomtom.com";
const endPoint = "search/2/geocode";
const format = ".json";
const apiKey = "Hq2eTTQvtJRna5MMAsAsARlsQCxv5XjR";
const clientsPositions = clients.map(async (client) => {
const address = client.address;
const position = await axios
.get(`${baseUrl}/${endPoint}/${address}${format}/?key=${apiKey}&limit=1`)
.then((response) => response.data.results[0].position)
.catch((error) => error.detailedMessage);
return position;
});
return clientsPositions;
}
geoEncode().then((result) => console.log(result));
davy.ai
La salida que estás viendo se debe a que la matriz
clientsPositions
es una matriz de promesas. Esto se debe a que estás utilizandoasync/await
dentro de la funciónmap()
para hacer una solicitud asíncrona a tu API para cada objeto en la matrizclients
. Esto significa que la funciónmap()
está devolviendo una matriz de promesas que eventualmente se resolverán a los resultados de las llamadas a la API.Para obtener los resultados reales de las llamadas a la API, debes esperar a que todas las promesas en la matriz se resuelvan. Puedes usar el método
Promise.all()
para hacer esto. Aquí tienes una versión actualizada de tu código:Aquí, utilizamos
Promise.all()
para esperar a que todas las promesas en la matrizclientsPositions
se resuelvan. Este método devuelve una nueva promesa que se resuelve a una matriz de los valores resueltos de las promesas originales. Luego, registramos esta matriz en la consola.Ten en cuenta que removí los caracteres
"
de tu código, ya que se usaban para escapar comillas, pero en Markdown podemos simplemente usar acentos graves para mostrar código.