Junior
Pastāsti par async/await konstrukciju JavaScript.
sobes.tech AI
Atbilde no AI
async/await – tas ir sintakses cukurs virs promisa, paredzēts vienkāršākam asinhronā koda rakstīšanai, kas izskatās kā sinhronais.
Funkcija, kas ir atzīmēta ar vārdu async, vienmēr atgriež promisu. async funkcijas iekšpusē var izmantot vārdu await.
Operators await tiek izmantots pirms promisa izsaukuma. Tas pārtrauc async funkcijas izpildi līdz brīdim, kad promiss tiks izpildīts (resolved) vai noraidīts (rejected). Promisa izpildes rezultāts (panākuma vērtība vai kļūda) tiek atgriezts ar await operatoru.
Ja promiss, kam priekšā ir await, tiek noraidīts, tas izraisa izņēmumu, ko var noķert ar try...catch bloku.
// `async/await` piemērs
async function fetchData() {
try {
// Gaidām asinhronas operācijas pabeigšanu (piemēram, API pieprasījumu)
const response = await fetch('https://api.example.com/data');
// Atbildes parsēšana uz JSON
const data = await response.json();
// Iegūto datu izvadīšana
console.log(data);
} catch (error) {
// Noķeram iespējamās kļūdas
console.error('Kļūda, saņemot datus:', error);
}
}
// Izsaucam `async` funkciju
fetchData();
// `async` funkcija, kas atgriež promisu
async function getValue() {
return 10; // Tas automātiski ietverts `Promise.resolve(10)`
}
getValue().then(value => console.log(value)); // Izvadīs 10
async/await priekšrocības:
- Koda lasāmība: Asinhronais kods kļūst līdzīgāks sinhronajam
- Kļūdu apstrāde: Ir ērtāk izmantot standarta
try...catchblokus. - Mazāk līmeņu: Izvairās no "kāpu līnijas" vai garām
.then()ķēdēm.
Jāatceras, ka await var izmantot tikai async funkcijās.