Skip to content

Instantly share code, notes, and snippets.

@Bigomby
Created October 16, 2018 09:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bigomby/c200ea9b8ac2b31224d604765431a097 to your computer and use it in GitHub Desktop.
Save Bigomby/c200ea9b8ac2b31224d604765431a097 to your computer and use it in GitHub Desktop.
const axios = require("axios");
const APP_ID = "b360564f62c547d1ac191557181610";
function buildUrl(city) {
return `https://api.worldweatheronline.com/premium/v1/weather.ashx?key=${APP_ID}&q=${city}&format=json`;
}
function getCurrentConditions(response) {
return response.data.data["current_condition"];
}
async function main() {
// Array donde almacenaremos nuestras promesas
const promises = [];
// Hay dos arrays de datos. Para cada elemento de cada array será
// necesaria una petición.
const spanishCities = ["sevilla", "madrid", "malaga"];
const ukCities = ["london", "liverpool", "birmingham"];
// Se convierten los arrays de ciudades en arrays de URLs para realizar
// las peticiones.
const spanishCitiesUrls = spanishCities.map(buildUrl);
const ukCitiesUrls = ukCities.map(buildUrl);
// Aquí se realizan las peticiones para cada elemento de cada array. Como
// resultado, en "promises" tendremos un array de un array de promesas:
//
// [ [Promesa "sevilla", Promesa "madrid", ...], [Promesa "london", ...] ]
//
promises.push(Promise.all(spanishCitiesUrls.map(url => axios.get(url))));
promises.push(Promise.all(ukCitiesUrls.map(url => axios.get(url))));
// Aquí se espera la resolución de los dos grupos de promesas
const responses = await Promise.all(promises);
// Responses contiene en la posición 0 el primer grupo de promesas (españa) y
// en la posición 1 el segundo grupo de promesas (uk). En este punto ya
// están resueltas pues va tras el "await".
//
// NOTA: Se usa la función auxiliar "getCurrentConditions" para extraer el
// dato que buscamos (condiciones actuales).
const spainCurrentConditions = responses[0].map(getCurrentConditions);
const ukCurrentConditions = responses[1].map(getCurrentConditions);
// Por último se imprime todo
console.log("SPAIN CITIES\n", spainCurrentConditions);
console.log("UK CITIES\n", ukCurrentConditions);
}
main();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment