Bug #036
🪲 Znajdź buga
async function getData() {
const url =
"https://api.spacexdata.com/v4/history"
const response = await fetch(url)
const json = await response.json()
return json
}
async function processData() {
const data = getData()
console.log(data)
}
processData()
Czy dane zostaną poprawnie pobrane z API i przetworzone?
Co zostanie zalogowane do konsoli?
🧪 Rozwiązanie
async function getData() {
const url = "https://api.spacexdata.com/v4/history"
const response = await fetch(url)
const json = await response.json()
return json
}
async function processData() {
const data = await getData()
console.log(data)
}
processData()
W błędnym przykładzie do konsoli zostanie zalogowany obiekt Promise.
Nie mamy w nim dostępu do danych, bo obietnica nie została wypełniona.
Aby rozwiązać ten problem musimy dodać brakujące słowo kluczowe await przed wywołaniem getData().
Moglibyśmy się też dostać do pobranych danych poprzez wywołanie metody then() na obiekcie Promise.
getData().then(resp => console.log(resp)) zwróciłoby nam dane, ale nie zostałyby one przypisane do stałej data.
Poprzez użycie konstrukcji await getData(), wykonywanie kodu zaczeka na pobranie danych i przypisze je do stałej data. Dzięki temu będziemy je mogli przetworzyć w dalszej części funkcji np. logując je do konsoli.
🎢 Plac zabaw
Otwórz edytor w nowym oknie📑 Linki
❤️ Podobają Ci się bugi JS?
Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js