3 svar
330 visningar
mels är nöjd med hjälpen
mels 2 – Fd. Medlem
Postad: 27 jan 2020 09:35

Async await vs Promise

Hejsan! 

Har en fråga gällande async await. Vad är skillnaden mellan detta och ett Promise (.then, .catch)?  Och vilket bör användas när?

Tack på förhand, 

Mels

Laguna Online 28518
Postad: 27 jan 2020 10:09

Jag visste inte ens att det här fanns, och jag kan fortfarande inte svara på frågan, men i den här diskussionen står det massor om det, i kommentarerna: https://javascript.info/async-await 

mels 2 – Fd. Medlem
Postad: 27 jan 2020 12:40

Okej! Tack för svar!

Ironboy 15 – Fd. Medlem
Postad: 15 jun 2020 13:35 Redigerad: 15 jun 2020 13:35

Async/await är "syntaxtiskt socker" ovanpå promises. Och ett väldigt trevligt socker.

En async-funktion omvandlas till ett promise/löfte när den anropas, och i den kan man göra await på andra promises/async-funktioner. Sker ett fel under körningen av en async-funktion är det det samma som att löftet blivit brutit/"rejected". Returnerar funktionen något är det detsamma som att löftet blivit uppfyllt/"resolved".

Await väntar på ett promise/resultatet av en async-funktion till dess att detta promise har uppfyllts/blivit "resolved". Observera att du fortfarande bör använda catch-metoden (som finns för alla promises) om det finns en risk för att ett promise bryts/blir "rejected".

Exempel:
En funktion som hämtar data från en json-fil.

async function getJSON(pathToJsonFile) {
  return await (await fetch(pathToJsonFile)).json();
}

async function test(){
  let data = await getJSON('myJSONFile.json')
    .catch(e => console.warn('Error', e));
  // do something with the data
  console.log(data);
}

test();

Svara Avbryt
Close