Јавсцрипт асинц / аваит

У овом упутству ћете научити о ЈаваСцрипт асинц / аваит кључним речима уз помоћ примера.

Користите 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). Неки старији прегледачи можда не подржавају употребу асинц / аваит. Да бисте сазнали више, посетите ЈаваСцрипт асинц / аваит подршку за прегледач.

Занимљиви Чланци...