async / await

Синтактическая надстройка над промисами. Зручний спосіб написання асинхронного коду, який ззовні схожий на синхронний. Цей механізм був доданий до стандарту ECMAScript 2017 (ES8) і став дуже популярним серед розробників завдяки його зручності та зрозумілості. Будь-яка функція може бути асинхронною.

Обява

async function asyncFn(){
//завжи повертає Промис
}

const asyncFn = async()=>{
//завжи повертає Промис
}

Виклик

Приклад 1 нормальне повернення

asyncFn()
.then(value=>console.log(value))

Приклад 2 повернення помилки

const asyncFn = async()=>{
throw new Error ('It is error')
}
asyncFn()
.then(value=>console.log(value))
.catch(error=>console.log(error))

Приклад 3 Очикування результату промісу та виконання асінхронного виклику

const timerPromise =()=>
new Promise((resolve, reject)=>
setTimeout(()=>resolve(),2000))
const asyncFN=async()=>{
console.log('Timer start')
await timerPromise()
console.log('timer end')
}
asyncFN() //Віклик асинхронної функції
console.log('after async') //Будк виконано відразу після попередньої невважаючи що попередня ще не закіньчена

Приклад 4 Якщо не вказувати значення для повернення, буде створений проміс зі значенням undefined.

const foo = async () => {
// Не вказуємо значення для повернення
};
foo().then(value => {
console.log(value); // undefined
});