В Javascript есть разные способы написания асинхронного кода, такие как использование обратных вызовов, обещаний и async / await.

Асинхронные функции позволяют очень четко писать асинхронный код -

Синтаксис -

async function function_name(param1,param2,...,param_n){
          //function statement.
}

Асинхронная функция всегда возвращает обещание, которое разрешается со значением, которое она возвращает или отклоняет, если асинхронная функция выдает ошибку.

Давайте разберемся с этим на примере -

async function add(num1,num2){
  return num1+num2;
 }
const promiseObj1 = add(5,6);
promiseObj1.then(result=>{
       console.log("result is "+result); //result is 11
})

В приведенном выше примере add - это асинхронная функция, которая возвращает сложение двух чисел, но неявно возвращает объект обещания, который можно разрешить с помощью метода then и получить результат.

async function substract(num1,num2){
          throw Error("Some error occured");
   }
const promiseObj2 = substract(10,2);
promiseObj2.then(result=>{
       console.log("result is "+ result);
   }).catch(err=>{
        console.log("Error "+err); //Error Error: Some error occured
   })

В приведенном выше примере subtract - это асинхронная функция, которая выдает ошибку, но аналогичным образом и здесь она возвращает объект обещания, и вы можете отловить ошибку с помощью метода catch.

Ждите -

Вы можете использовать ключевое слово await, чтобы дождаться вывода, который может быть любым (например, получение данных из базы данных, вызов внешних API-интерфейсов), и заблокировать выполнение других операторов функции, но не заблокировать выполнение вызывающей функции.

Вы можете использовать ключевое слово await только в асинхронной функции, если вы используете его вне асинхронной функции, оно вызывает синтаксическую ошибку.

Давайте возьмем пример и напишем его двумя способами, используя обещание и async / await -

Использование обратных вызовов Promise

getResponseText(url){
     return fetch(url).then(response=>{
            return response.getText().then(text=>{
                      return text;
                  })
           })
    }
getResponseText();  // Return the response text.

Использование Async / Await

async function getResponseText(url){
         const response = await fetch(url);
         const text = await response.getText();
         return text;
    }
getResponseText(); // Return the response text.

В приведенном выше примере обе функции выполняют одну и ту же задачу и также имеют одинаковую числовую строку кода, но вторая более понятна и удобочитаема.

Спасибо за прочтение :)