3 svar
109 visningar
mels är nöjd med hjälpen!
mels 2
Postad: 27 jan 2020

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 10132
Postad: 27 jan 2020

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
Postad: 27 jan 2020

Okej! Tack för svar!

Ironboy 19
Postad: 15 jun 2020 Redigerad: 15 jun 2020

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