Created
October 16, 2018 09:46
-
-
Save Bigomby/c200ea9b8ac2b31224d604765431a097 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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