V tej vadnici boste s pomočjo primerov spoznali ključne besede async / await JavaScript.
Ključno async
besedo s funkcijo uporabljate za predstavitev, da je funkcija asinhrona funkcija. Funkcija async vrne obljubo.
Sintaksa async
funkcije je:
async function name(parameter1, parameter2,… paramaterN) ( // statements )
Tukaj,
- ime - ime funkcije
- parametri - parametri, ki se posredujejo funkciji
Primer: Async Function
// async function example async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f();
Izhod
Async funkcija.
V zgornjem programu se async
ključna beseda uporablja pred funkcijo, da dokaže, da je funkcija asinhrona.
Ker ta funkcija vrne obljubo, lahko uporabite verižno metodo, then()
kot je ta:
async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f().then(function(result) ( console.log(result) ));
Izhod
Funkcija asinhronizacije 1
V zgornjem programu je f()
funkcija razrešena in then()
metoda se izvede.
JavaScript čaka na ključno besedo
Ključna await
beseda se uporablja znotraj async
funkcije za čakanje na asinhrono operacijo.
Sintaksa za uporabo await je:
let result = await promise;
Uporaba await
zaustavi funkcijo asinhronizacije, dokler obljuba ne vrne vrednosti rezultata (razreši ali zavrni). Na primer
// 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();
Izhod
Obljuba razrešena pozdravljeni
V zgornjem programu se ustvari Promise
objekt, ki se po 4000 milisekundah razreši . Tu je asyncFunc()
funkcija napisana z uporabo async
funkcije.
Ključna await
beseda čaka na popolno obljubo (razreši ali zavrni).
let result = await promise;
Zato se zdravo prikaže šele, ko je spremenljivki rezultata na voljo vrednost obljube.
Če se v zgornjem programu await
ne uporablja, se prikaže pozdrav, preden je Obljuba razrešena.
Opomba : Uporabljate lahko await
samo funkcije asinhronizacije.
Funkcija async omogoča izvedbo asinhrone metode na videz sinhrono. Čeprav je operacija asinhrona, se zdi, da se operacija izvaja sinhrono.
To je lahko koristno, če je v programu več obljub. Na primer
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); )
V zgornjem programu await
čaka, da se vsaka obljuba izpolni.
Obravnavanje napak
Med uporabo async
funkcije kodo pišete sinhrono. catch()
Način lahko uporabite tudi za odkrivanje napake. Na primer
asyncFunc().catch( // catch error and do something )
Napako lahko odpravite tudi z uporabo try/catch
bloka. Na primer
// 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
V zgornjem programu smo uporabili try/catch
blok za obdelavo napak. Če se program uspešno zažene, gre v try
blok. In če program vrne napako, bo šel v catch
blok.
Če želite izvedeti več o try/catch
podrobnostih, obiščite JavaScript poskus / ulov JavaScript.
Prednosti uporabe async funkcije
- Koda je bolj berljiva kot uporaba povratnega klica ali obljube.
- Obravnavanje napak je preprostejše.
- Odpravljanje napak je lažje.
Opomba : Ti dve ključni besedi async/await
sta bili predstavljeni v novejši različici JavaScripta (ES8). Nekateri starejši brskalniki morda ne podpirajo uporabe async / await. Če želite izvedeti več, obiščite podporo za brskalnik async / await JavaScript.