В 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.
В приведенном выше примере обе функции выполняют одну и ту же задачу и также имеют одинаковую числовую строку кода, но вторая более понятна и удобочитаема.