Volání asynchronní funkce z neasynchronní
Máme „obyčejnou“ funkci nazvanou f. Jak můžeme volat async funkci čekej() a použít její výsledek uvnitř f?
async function čekej() {
await new Promise(resolve => setTimeout(resolve, 1000));
return 10;
}
function f() {
// ...co byste sem měli napsat?
// musíme volat asynchronní čekej() a čekat, než obdržíme 10
// pamatujte, že nemůžeme použít „await“
}
P.S. Tento úkol je technicky velmi jednoduchý, ale tato otázka je u vývojářů, kteří s async/await teprve začínají, vcelku běžná.
Toto je případ, kdy nám pomáhá, že víme, jak to funguje uvnitř.
Jednoduše zacházejte s voláním async jako s příslibem a připojte k němu .then:
async function čekej() {
await new Promise(resolve => setTimeout(resolve, 1000));
return 10;
}
function f() {
// za 1 sekundu zobrazí 10
čekej().then(výsledek => alert(výsledek));
}
f();