Javscript asinhronizēt / gaidīt

Šajā apmācībā jūs uzzināsit par JavaScript async / await atslēgvārdiem, izmantojot piemērus.

Jūs izmantojat asyncatslēgvārdu ar funkciju, lai parādītu, ka funkcija ir asinhrona funkcija. Async funkcija atgriež solījumu.

Funkcijas sintakse asyncir šāda:

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

Šeit,

  • nosaukums - funkcijas nosaukums
  • parametri - parametri, kas tiek nodoti funkcijai

Piemērs: Async funkcija

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

Rezultāts

 Asinhronizācijas funkcija.

Iepriekš minētajā programmā asyncatslēgvārds tiek izmantots pirms funkcijas, lai parādītu, ka funkcija ir asinhrona.

Tā kā šī funkcija atgriež solījumu, varat izmantot šādu ķēdes metodi then():

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

Rezultāts

 Asinhronizācijas funkcija 1

Iepriekš minētajā programmā f()funkcija tiek atrisināta un then()metode tiek izpildīta.

JavaScript gaida atslēgvārdu

awaitAtslēgvārds tiek izmantots iekšpusē asyncfunkciju gaidīt asinhrono darbību.

Sagaidāmā sintakse ir:

 let result = await promise;

No izmantošana awaitpauzē async funkcija līdz solījumu atgriež rezultātu (atrisināt vai noraidīt) vērtību. Piemēram,

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

Rezultāts

 Apsolījums atrisināts sveiks

Iepriekš minētajā programmā Promisetiek izveidots objekts, un tas tiek atrisināts pēc 4000 milisekundēm. Šeit asyncFunc()funkcija tiek rakstīta, izmantojot asyncfunkciju.

Par awaitatslēgvārdu gaida solījumu pilnīga (atrisināt vai noraidīt).

 let result = await promise;

Tādējādi sveiki tiek parādīti tikai pēc tam, kad rezultāta mainīgajam ir pieejama solījuma vērtība.

Ja iepriekšminētajā programmā awaitnetiek izmantots, tiek parādīts sveiciens, pirms solījums ir atrisināts.

Async / gaidīšanas funkcijas darbība

Piezīme . Varat izmantot awaittikai asinhrono funkciju iekšpusē.

Asinhronizācijas funkcija ļauj asinhrono metodi izpildīt šķietami sinhronā veidā. Lai gan darbība ir asinhrona, šķiet, ka operācija tiek veikta sinhronā veidā.

Tas var būt noderīgi, ja programmā ir vairāki solījumi. Piemēram,

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

Iepriekš minētajā programmā awaitgaidiet, kad katrs solījums tiks izpildīts.

Kļūdu apstrāde

Lietojot asyncfunkciju, kods tiek rakstīts sinhronā veidā. Un catch()kļūdas novēršanai varat izmantot arī metodi. Piemēram,

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

Cits veids, kā rīkoties ar kļūdu, ir try/catchbloķēšana. Piemēram,

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

Iepriekš minētajā programmā try/catchkļūdu novēršanai mēs izmantojām bloku. Ja programma darbojas veiksmīgi, tā nonāks tryblokā. Un, ja programma izmet kļūdu, tā pāriet uz catchbloku.

Lai uzzinātu vairāk par try/catchdetalizētu informāciju, apmeklējiet vietni JavaScript JavaScript / catch.

Async funkcijas izmantošanas priekšrocības

  • Kods ir lasāmāks nekā atzvanīšanas vai solījuma izmantošana.
  • Kļūdu apstrāde ir vienkāršāka.
  • Atkļūdošana ir vienkāršāka.

Piezīme . Šie divi atslēgvārdi async/awaittika ieviesti jaunākajā JavaScript versijā (ES8). Dažas vecākas pārlūkprogrammas var neatbalstīt asinhronizācijas / gaidīšanas lietošanu. Lai uzzinātu vairāk, apmeklējiet JavaScript async / gaidiet pārlūka atbalstu.

Interesanti raksti...