async / await
async : Слово async
перед function
означает одну простую вещь:функция всегда возвращает обещание.
await : Ключевое слово await
заставляет JavaScript ждать, пока это обещание выполнится и возвращает его результат.
Здесь
async function test() {
let task = asyncTask() //return a promise
//function still running
await task
//code executed only if task is resolved
}
Функция выполняет «паузу» в строке (await task
) и возобновляет работу после выполнения обещания, а task
становится его результатом.
Подчеркнем: await
буквально заставляет JavaScript ждать, пока обещание не выполнится, а затем переходить к результату.
Если обещание разрешается нормально, тогда ожидание возвращает result
.Но в случае отказа он выдает error
.
1. Либо, как уже сказано в answer Мы должны отловить эту ошибку, используя try..catch
async function test() {
let task = asyncTask()
//function still running
try {
await task
} catch (err){
throw new Error(err);
}
}
2. Если у нас нет try..catch
, то обещание, сгенерированное вызовом асинхронной функции test()
, будет отклонено.Мы можем добавить .catch
для обработки:
async function test() {
let task = asyncTask() //return a promise
//function still running
await task
//code executed only if task is resolved
}
test().catch(//error);
Подробнее Если .catch
нет, то мы получаем необработанную ошибку обещания.Мы можем отследить такие ошибки, используя глобальный обработчик событий .