Jeszcze raz, szybkie ćwiczenie, które ma nam pokazać, jak działa słówko kluczowe async w JavaScript i co ono w zasadzie robi. Do dzieła.
Ok, mamy taką funkcję:
function get42(){
return 42;
}
let num = get42();
console.log(++num); //43
Proste? Proste. Ok, zróbmy teraz sobie async funkcję:
async function get42async(){
return 42;
}
Żadnego await robić w tej funkcji nie musimy. Możemy, dzięki słówku kluczowemu async, wcale nie musimy, to warto pamiętać. Ok, ale co ta funkcja zwraca?
Cóż, jeżeli mamy TypeScripta, to możemy zobaczyć, że return type to jest Promise<unknown>. Możemy też zrobić anotację, że chcemy Promise<number> i będzie działać.
Czyli to jest promise, choć żadnego nie tworzymy. Zobaczmy:
async function get42async(){
return 42;
}
get42async().then((n) => console.log(++n)); //43
Co jeszcze powinniśmy wiedzieć? W obrębie jednej funkcji awaity czekają na siebie. Są wykonywane sekwencyjnie:
async function addTwo(numb) {
return numb + 2;
}
async function twoTimes(numb){
let x = await addTwo(numb);
let y = await addTwo(x);
return y;
};
twoTimes(10).then((val) => console.log(val)); //14
Tutaj czekamy na wynik pierwszego awaita z drugim. One nie idą równocześnie (gdyby to robiły, popsułyby kod). Ok, tyle tytułem przypomnienia.