Przejdź do głównej zawartości

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