He estado codificando en JavaScript durante aproximadamente un año, pero tengo este extraño error / error. He encontrado una solución alternativa, pero tengo curiosidad por una explicación de por qué .
Así que tengo una función asíncrona que recibe datos meteorológicos de una API getWeatherStats() Devuelve una promesa que se abre con la notación .then en otra función llamada getCoordinates() . Simplifiqué la función weatherParser() para mostrar que si hago que la solución sea recursiva, regresa indefinida, pero si se hace iterativamente, funciona bien.
getWeatherStats(city).then((data) => { console.log(data) var i = 0; var done = weatherParser(data, i); console.log(done); //returns undefined if done recursively, is fine if done iteratively }) async function getWeatherStats(city) { var url = `http://api.openweathermap.org/data/2.5/forecast?q=${city}&appid=${weatherKey}`; let response = await fetch(url); let data = await response.json(); var i = 0; return new Promise(resolve => { resolve(data); }, 2000);Aquí está la solución recursiva que devuelve nulo
function weatherParser(data, i, widgetHolder, date = null) { if (i > 20) return 'hello' i++; weatherParser(data, i, widgetHolder, date)Solución iterativa:
function weatherParser(data, i, widgetHolder, date = null) { for (var i = 0; i < 20; i++) { } return 'hello'