Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ asinchronizavimo / laukimo raktinius žodžius.
Raktinį async
žodį su funkcija naudojate norėdami parodyti, kad funkcija yra asinchroninė funkcija. Async funkcija grąžina pažadą.
async
Funkcijos sintaksė yra tokia:
async function name(parameter1, parameter2,… paramaterN) ( // statements )
Čia
- pavadinimas - funkcijos pavadinimas
- parametrai - parametrai, kurie perduodami funkcijai
Pavyzdys: Async funkcija
// async function example async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f();
Rezultatas
Async funkcija.
Pirmiau minėtoje programoje async
raktinis žodis naudojamas prieš funkciją, siekiant parodyti, kad funkcija yra asinchroninė.
Kadangi ši funkcija grąžina pažadą, galite naudoti tokį grandinės metodą then()
:
async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f().then(function(result) ( console.log(result) ));
Rezultatas
Async funkcija 1
Pirmiau pateiktoje programoje f()
funkcija išspręsta ir then()
metodas vykdomas.
„JavaScript“ laukia raktinio žodžio
await
Raktažodis naudojamas viduje async
funkcija laukti asinchroninio veikimo.
Laukiama sintaksė yra:
let result = await promise;
Naudojant await
pristabdoma „async“ funkcija, kol pažadas grąžins rezultato (išspręsti ar atmesti) vertę. Pavyzdžiui,
// a promise let promise = new Promise(function (resolve, reject) ( setTimeout(function () ( resolve('Promise resolved')), 4000); )); // async function async function asyncFunc() ( // wait until the promise resolves let result = await promise; console.log(result); console.log('hello'); ) // calling the async function asyncFunc();
Rezultatas
Pažadas išsisprendęs labas
Pirmiau pateiktoje programoje Promise
objektas yra sukurtas ir jis išsprendžiamas po 4000 milisekundžių. Čia asyncFunc()
funkcija parašyta naudojant async
funkciją.
Į await
raktažodžius laukia pažado būti baigtas (apsisprendimas arba atmesti).
let result = await promise;
Taigi, labas rodomas tik tada, kai rezultato kintamajam pasiekiama pažadų vertė.
Jei await
nenaudojama pirmiau pateiktoje programoje, prieš pažadą išsprendžiant rodomas labas.
![](https://cdn.wiki-base.com/5118073/javscript_asyncawait.png.webp)
Pastaba : Galite naudoti await
tik asinchroninių funkcijų viduje.
Async funkcija leidžia asinchroninį metodą vykdyti iš pažiūros sinchroniniu būdu. Nors operacija yra asinchroninė, atrodo, kad operacija vykdoma sinchroniškai.
Tai gali būti naudinga, jei programoje yra keli pažadai. Pavyzdžiui,
let promise1; let promise2; let promise3; async function asyncFunc() ( let result1 = await promise1; let result2 = await promise2; let result3 = await promise3; console.log(result1); console.log(result1); console.log(result1); )
Aukščiau pateiktoje programoje await
laukite , kol kiekvienas pažadas bus įvykdytas.
Klaida tvarkant
Naudodamiesi async
funkcija, kodą rašote sinchroniškai. Taip pat galite naudoti catch()
metodą klaidai sugauti. Pavyzdžiui,
asyncFunc().catch( // catch error and do something )
Kitas būdas pašalinti klaidą yra try/catch
blokavimas. Pavyzdžiui,
// a promise let promise = new Promise(function (resolve, reject) ( setTimeout(function () ( resolve('Promise resolved')), 4000); )); // async function async function asyncFunc() ( try ( // wait until the promise resolves let result = await promise; console.log(result); ) catch(error) ( console.log(error); ) ) // calling the async function asyncFunc(); // Promise resolved
Pirmiau pateiktoje programoje try/catch
klaidoms pašalinti naudojome bloką. Jei programa sėkmingai veikia, ji pateks į try
bloką. Ir jei programa išmeta klaidą, ji pateks į catch
bloką.
Norėdami sužinoti daugiau apie try/catch
tai išsamiai, apsilankykite „JavaScript JavaScript try / catch“.
Async funkcijos naudojimo pranašumai
- Kodas yra lengviau įskaitomas, nei naudojant atgalinį skambutį ar pažadą.
- Klaidų tvarkymas yra paprastesnis.
- Derinti lengviau.
Pastaba : Šie du raktiniai žodžiai async/await
buvo įvesti naujesnėje „JavaScript“ versijoje (ES8). Kai kurios senesnės naršyklės gali nepalaikyti async / await naudojimo. Norėdami sužinoti daugiau, apsilankykite „JavaScript async“ / laukite naršyklės palaikymo.