JavaScript Асинхронные функции (async/await)

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()
Войти в полноэкранный режим Выйти из полноэкранного режима

Вывести

Оцените статью
devanswers.ru
Добавить комментарий