У овом упутству ћете научити о ЈаваСцрипт асинц / аваит кључним речима уз помоћ примера.
Користите async
кључну реч са функцијом да представите да је функција асинхрона функција. Функција асинц враћа обећање.
Синтакса async
функције је:
async function name(parameter1, parameter2,… paramaterN) ( // statements )
Ево,
- име - назив функције
- параметри - параметри који се прослеђују функцији
Пример: Асинх. Функција
// async function example async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f();
Оутпут
Асинц функција.
У горе наведеном програму, async
кључна реч се користи пре функције да би приказала да је функција асинхрона.
Будући да ова функција враћа обећање, можете користити метод уланчавања then()
попут овог:
async function f() ( console.log('Async function.'); return Promise.resolve(1); ) f().then(function(result) ( console.log(result) ));
Оутпут
Асинх. Функција 1
У горњем програму, f()
функција је решена и then()
метода се извршава.
ЈаваСцрипт чека кључну реч
Кључна await
реч се користи унутар async
функције за чекање асинхроне операције.
Синтакса коју треба користити аваит је:
let result = await promise;
Употреба await
паузира функцију асинхронизације све док обећање не врати вредност резултата (разреши или одбаци). На пример,
// 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();
Оутпут
Обећање решено здраво
У горе наведеном програму Promise
креира се објекат који се решава након 4000 милисекунди. Овде је asyncFunc()
функција написана помоћу async
функције.
У await
кључним речима чека за обећање да буде потпуна (решеност или одбити).
let result = await promise;
Дакле, здраво се приказује само након што је променљива резултата доступна вредности обећања.
У горенаведеном програму, ако await
се не користи, здраво се приказује пре него што је обећање решено.
Напомена : Можете да користите await
само функције асинхронизације.
Функција асинхронизације омогућава извршавање асинхроне методе на наизглед синхрони начин. Иако је операција асинхрона, чини се да се операција извршава синхроно.
Ово може бити корисно ако у програму постоји више обећања. На пример,
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); )
У горњем програму, await
чека се да свако обећање буде завршено.
Грешка руковање
Док користите async
функцију, код пишете синхроно. А такође можете користити catch()
методу да бисте уловили грешку. На пример,
asyncFunc().catch( // catch error and do something )
Други начин на који можете решити грешку је коришћење try/catch
блока. На пример,
// 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
У горе наведеном програму користили смо try/catch
блок за руковање грешкама. Ако се програм успешно покрене, прећи ће на try
блок. А ако програм баци грешку, прећи ће на catch
блок.
Да бисте сазнали више о try/catch
детаљима, посетите ЈаваСцрипт ЈаваСцрипт три / цатцх.
Предности употребе функције асинхронизације
- Код је читљивији од коришћења повратног позива или обећања.
- Руковање грешкама је једноставније.
- Отклањање грешака је лакше.
Напомена : Ове две кључне речи async/await
су представљене у новијој верзији ЈаваСцрипт-а (ЕС8). Неки старији прегледачи можда не подржавају употребу асинц / аваит. Да бисте сазнали више, посетите ЈаваСцрипт асинц / аваит подршку за прегледач.