В этом руководстве вы узнаете о ключевых словах JavaScript async / await с помощью примеров.
Вы используете async
ключевое слово с функцией, чтобы обозначить, что функция является асинхронной функцией. Функция async возвращает обещание.
Синтаксис async
функции:
async function name(parameter1, parameter2,… paramaterN) ( // statements )
Вот,
- name - имя функции
- параметры - параметры, которые передаются в функцию
Пример: асинхронная функция
// 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()
метод.
Ключевое слово ожидания JavaScript
await
Используется ключевое слово внутри async
функции ждать асинхронной операции.
Синтаксис для использования await:
let result = await promise;
Использование await
as приостанавливает асинхронную функцию до тех пор, пока обещание не вернет значение результата (разрешить или отклонить). Например,
// 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
только внутри асинхронных функций.
Функция async позволяет выполнять асинхронный метод, казалось бы, синхронно. Хотя операция является асинхронной, кажется, что операция выполняется синхронно.
Это может быть полезно, если в программе несколько обещаний. Например,
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
, посетите JavaScript JavaScript try / catch.
Преимущества использования функции async
- Код более читабелен, чем использование обратного вызова или обещания.
- Обработка ошибок проще.
- Отладка проще.
Примечание . Эти два ключевых слова async/await
были введены в новой версии JavaScript (ES8). Некоторые старые браузеры могут не поддерживать использование async / await. Чтобы узнать больше, посетите страницу поддержки JavaScript async / await в браузере.