Javscript asünkroon / ootama

Selles õpetuses saate näidete abil õppida JavaScripti asünkroonimise / ootamise märksõnade kohta.

Kasutate asyncmärksõna funktsiooniga esindama, et funktsioon on asünkroonne funktsiooni. Asünkroonimisfunktsioon tagastab lubaduse.

Funktsiooni süntaks asyncon:

 async function name(parameter1, parameter2,… paramaterN) ( // statements )

Siin,

  • nimi - funktsiooni nimi
  • parameetrid - parameetrid, mis edastatakse funktsioonile

Näide: funktsioon Async

 // async function example async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f(); 

Väljund

 Asünkroonimisfunktsioon.

Ülaltoodud programmis kasutatakse asyncmärksõna enne funktsiooni, et näidata funktsiooni asünkroonsust.

Kuna see funktsioon annab lubaduse, saate aheldamismeetodit kasutada järgmiselt then():

 async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f().then(function(result) ( console.log(result) ));

Väljund

 Asünkroonimisfunktsioon 1

Ülalolevas programmis on f()funktsioon lahendatud ja then()meetod käivitatakse.

JavaScript ootab märksõna

awaitMärksõna on kasutatud sees asyncfunktsiooni oodata asünkroontalitlusekaitse.

Oodatav süntaks on järgmine:

 let result = await promise;

awaitAsync-funktsiooni kasutamine peatab seni, kuni lubadus annab tulemuse (lahenda või lükka tagasi) väärtuse. Näiteks,

 // 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();

Väljund

 Lubadus lahendatud tere

Ülalolevas programmis luuakse Promiseobjekt ja see lahendatakse pärast 4000 millisekundit. Siin asyncFunc()kirjutatakse funktsioon asyncfunktsiooni abil.

awaitMärksõna ootab lubadus olla täielik (lahendada või tagasi lükata).

 let result = await promise;

Seega kuvatakse tere alles siis, kui tulemuse muutujale on lubatud lubaduse väärtus.

Kui ülalnimetatud programmis awaitseda ei kasutata, kuvatakse tere enne lubaduse lahendamist.

Async / await funktsiooni töötamine

Märkus . Saate kasutada awaitainult asünkroonimisfunktsioonide sees.

Asünkroonfunktsioon võimaldab asünkroonse meetodi käivitada näiliselt sünkroonsel viisil. Kuigi toiming on asünkroonne, näib, et toiming viiakse läbi sünkroonsel viisil.

See võib olla kasulik, kui programmis on mitu lubadust. Näiteks,

 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); )

Eespool nimetatud programmis awaitootab iga lubaduse täitmine.

Viga käsitsemisel

asyncFunktsiooni kasutamise ajal kirjutate koodi sünkroonselt. Ja catch()vea tabamiseks võite kasutada ka meetodit. Näiteks,

 asyncFunc().catch( // catch error and do something )

Teine võimalus viga lahendada on try/catchblokeerimine. Näiteks,

 // 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

Eespool nimetatud programmis oleme try/catchvigade käsitlemiseks kasutanud plokki. Kui programm töötab edukalt, läheb see tryplokki. Ja kui programm viskab vea, läheb see catchplokki.

Täpsema teabe saamiseks try/catchkülastage JavaScripti JavaScripti proovimist / püüdmist.

Async-funktsiooni kasutamise eelised

  • Kood on loetavam kui tagasihelistamise või lubaduse kasutamine.
  • Veakäsitlus on lihtsam.
  • Silumine on lihtsam.

Märkus . Need kaks märksõna async/awaitvõeti kasutusele JavaScripti uuemas versioonis (ES8). Mõni vanem brauser ei pruugi async / await kasutamist toetada. Lisateabe saamiseks külastage JavaScripti asünkroonimist / oodake brauseri tuge.

Huvitavad Artiklid...