Async и await построены поверх promise для выражения асинхронных действий.
Внутри функции ключевое слово await может быть применено к любому Promise, что отложит выполнение до тех пор, пока обещание не разрешится.
Функции с ключевым словом async возвращают Promise. Функция с ключевым словом async может выполнять асинхронные действия, но при этом выглядеть синхронной.
Метод await используется для ожидания выполнения или отклонения обещания.
Общий синтаксис
Async function function_name(){
await some_promise()
}
Без async/await
let result = function(score){
return new Promise(function(resolve, reject){
console.log("Calculating results...")
if(score>50){
resolve("Congratulation! You have passed")
}else{
reject("You have failed")
}
})
}
let grade = function(response){
return new Promise(function(resolve, reject){
console.log("Calculating your grade...")
resolve("Your grade is A. " + response)
})
}
result(80).then(response => {
console.log("Result Received")
return grade(response)
}).then(finalgrade => {
console.log(finalgrade)
}).catch(err => {
console.log(err)
})
Выход
async function calculateResults(){
const response = await result(80)
}
Итак, что делает ключевое слово await. Пока обещание результата не будет разрешено, все, что обещание вернет, будет храниться в переменной ответа.
С помощью async/await
let result = function(score){
return new Promise(function(resolve, reject){
console.log("Calculating results...")
if(score>50){
resolve("Congratulation! You have passed")
}else{
reject("You have failed")
}
})
}
let grade = function(response){
return new Promise(function(resolve, reject){
console.log("Calculating your grade...")
resolve("Your grade is A. " + response)
})
}
async function calculateResults(){
try{
const response = await result(80);
console.log("Results Received");
const finalgrade = await grade(response)
console.log(finalgrade)
}catch(err){
console.log(err)
}
}
calculateResults()
Вывести