Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript async / await kulcsszavakat.
A async
kulcsszót egy függvénnyel használja annak ábrázolására, hogy a függvény aszinkron függvény. Az aszinkron függvény ígéretet ad vissza.
A async
függvény szintaxisa :
async function name(parameter1, parameter2,… paramaterN) ( // statements )
Itt,
- név - a függvény neve
- paraméterek - a függvénynek átadott paraméterek
Példa: Async függvény
// async function example async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f();
Kimenet
Async funkció.
A fenti programban a async
kulcsszót a függvény előtt használják annak jelzésére, hogy a függvény aszinkron.
Mivel ez a függvény ígéretet ad, használhatja a következő láncolási módszert then()
:
async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f().then(function(result) ( console.log(result) ));
Kimenet
Async függvény 1
A fenti programban a f()
függvény feloldódik, és a then()
metódus végrehajtásra kerül.
A JavaScript várja a kulcsszót
A await
kulcsszót a async
függvényen belül várják az aszinkron működésre.
A várakozni kívánt szintaxis a következő:
let result = await promise;
Az await
aszinkron függvény szüneteltetése mindaddig, amíg az ígéret eredményt (felold vagy elutasít) nem ad vissza. Például,
// 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();
Kimenet
Ígéret megoldva hello
A fenti programban Promise
létrejön egy objektum, és 4000 milliszekundum után feloldódik . Itt a asyncFunc()
függvény a függvény segítségével íródik async
.
A await
kulcsszó arra vár, hogy az ígéret teljes legyen (elutasítás vagy elutasítás).
let result = await promise;
Ezért a helló csak akkor jelenik meg, ha az ígéret értéke rendelkezésre áll az eredményváltozó számára.
Ha a fenti programban await
nem használjuk , akkor az üdvözlet megjelenik, mielőtt az Ígéret megoldódott.

Megjegyzés : await
Csak az aszinkron függvényeken belül használható .
Az aszinkron funkció lehetővé teszi az aszinkron módszer látszólagos szinkron módon történő végrehajtását. Bár a művelet aszinkron, úgy tűnik, hogy a műveletet szinkron módon hajtják végre.
Ez akkor lehet hasznos, ha több ígéret szerepel a programban. Például,
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); )
A fenti programban await
várja meg minden ígéret teljesítését.
Hibakezelés
A async
funkció használata közben szinkron módon írja a kódot. És a catch()
módszerrel is elkaphatja a hibát. Például,
asyncFunc().catch( // catch error and do something )
A hiba másik kezelési módja a try/catch
blokk használata . Például,
// 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
A fenti programban try/catch
blokkot használtunk a hibák kezelésére. Ha a program sikeresen fut, akkor a try
blokkra kerül. És ha a program hibát dob, akkor a catch
blokkra megy .
Ha try/catch
részletesebben szeretne többet megtudni , látogasson el a JavaScript JavaScript try / catch oldalára.
Az aszinkron funkció használatának előnyei
- A kód olvashatóbb, mint egy visszahívás vagy egy ígéret használata.
- A hibakezelés egyszerűbb.
- A hibakeresés könnyebb.
Megjegyzés : Ez a két kulcsszó async/await
a JavaScript újabb verziójában (ES8) került bevezetésre. Egyes régebbi böngészők nem támogatják az async / await használatát. További információkért látogasson el a JavaScript async oldalára / várja a böngésző támogatását.