Javscript asynkronoi / odota

Tässä opetusohjelmassa opit JavaScriptin asynkronoimisesta / odottavista avainsanoista esimerkkien avulla.

Käytät asyncavainsanaa funktion kanssa osoittamaan, että funktio on asynkroninen toiminto. Async-funktio palauttaa lupauksen.

Toiminnon syntaksi asyncon:

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

Tässä,

  • nimi - toiminnon nimi
  • parametrit - parametrit, jotka välitetään funktiolle

Esimerkki: Asynkronitoiminto

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

Tuotos

 Asynkronitoiminto.

Yllä olevassa ohjelmassa asyncavainsanaa käytetään ennen funktiota osoittamaan, että toiminto on asynkroninen.

Koska tämä toiminto palauttaa lupauksen, voit käyttää ketjutustapaa then()seuraavasti:

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

Tuotos

 Asynkronitoiminto 1

Yllä olevassa ohjelmassa f()toiminto ratkaistaan ​​ja then()menetelmä suoritetaan.

JavaScript odottaa avainsanaa

awaitAvainsanaa käytetään sisällä asynctoiminto odottamaan asynkronisen toiminnan.

Odottavan syntaksin nimi on:

 let result = await promise;

awaitAsynkronointitoiminnon käyttö keskeyttää, kunnes lupaus palauttaa tuloksen (ratkaise tai hylkää) arvon. Esimerkiksi,

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

Tuotos

 Lupaus ratkaissut hei

Yllä olevassa ohjelmassa luodaan Promiseobjekti, joka ratkaistaan 4000 millisekunnin kuluttua . Tässä asyncFunc()funktio kirjoitetaan asyncfunktiolla.

awaitAvainsana odottaa lupaus olisi täydellinen (ratkaista tai hylkää).

 let result = await promise;

Hei näytetään vasta sen jälkeen, kun tulosmuuttujalle on saatu lupa-arvo.

Jos yllä olevassa ohjelmassa awaitei käytetä, hei näytetään, ennen kuin lupaus on ratkaistu.

Async / await-toiminto toimii

Huomaa : Voit käyttää awaitvain asynkronointitoimintojen sisällä.

Asynkronitoiminto mahdollistaa asynkronisen menetelmän suorittamisen näennäisesti synkronisella tavalla. Vaikka operaatio on asynkroninen, näyttää siltä, ​​että operaatio suoritetaan synkronisesti.

Tästä voi olla hyötyä, jos ohjelmassa on useita lupauksia. Esimerkiksi,

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

Odota yllä olevassa ohjelmassa, awaitettä kukin lupaus on valmis.

Virheiden käsittely

Kun käytät asynctoimintoa, kirjoitat koodin synkronisesti. Ja voit myös käyttää catch()menetelmää virheen havaitsemiseksi. Esimerkiksi,

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

Toinen tapa käsitellä virhettä on try/catchestää. Esimerkiksi,

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

Yllä olevassa ohjelmassa olemme käyttäneet try/catchlohkoa virheiden käsittelemiseen. Jos ohjelma toimii onnistuneesti, se siirtyy trylohkoon. Ja jos ohjelma heittää virheen, se menee catchlohkoon.

Jos haluat lisätietoja try/catchyksityiskohdista, käy JavaScript-JavaScript-kokeilussa.

Asynkronitoiminnon käytön edut

  • Koodi on helpommin luettavissa kuin soittopyyntö tai lupaus.
  • Virhekäsittely on yksinkertaisempaa.
  • Virheenkorjaus on helpompaa.

Huomaa : Nämä kaksi avainsanaa async/awaitotettiin käyttöön uudemmassa JavaScript-versiossa (ES8). Jotkin vanhemmat selaimet eivät ehkä tue async / await -toiminnon käyttöä. Jos haluat lisätietoja, käy JavaScript async / odota selaimen tukea.

Mielenkiintoisia artikkeleita...