Обещания в Javascript

В этом блоге я постараюсь рассказать об основах обещаний в javascript.
Давайте поговорим об идее, прежде чем перейти к обещанию в коде javascript.

Обещание в javascript подобно обещанию в реальной жизни, например, отец обещает своей дочери принести шоколад, возвращаясь из офиса, и затем обещание должно быть выполнено, то есть отец приносит шоколад, или отклонено, отец не приносит шоколад.

Что такое обещание? Как мы можем создать обещание

Обещание — это объект, который создается после ответа на асинхронный вызов в коде javascript. Это позволяет асинхронным вызовам работать и возвращать синхронные значения, такие как успех или неудача обещания.

Обещание имеет три состояния…

  • состояние ожидания: начальное состояние
  • выполненное состояние: Обещание выполнено
  • отвергнутое состояние: Promise Failed

Давайте создадим Promise в javascript.
Обещание создается функцией Promise, которая принимает функцию обратного вызова с двумя аргументами resolve и reject.

let createPromise = new Promise((resolve,reject)=>{
    // promise defination
})
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь внутри этой функции обещания нам нужно определить само обещание, поэтому давайте рассмотрим пример обещания с разрешением, т.е. когда значение флага равно true, обещание разрешается и выдает сообщение, указанное в resolve, а если значение равно false, то выдает сообщение, указанное в rejected.

let createdPromise = new Promise((resolve ,reject)=>{
let flag = true ;
    if(flag){
        resolve("Promise Created")
    }else{
        reject("Promise Not Created")
    }
})
 Promise Created // for flag = true
 Promise Not Created // for flag =false
Вход в полноэкранный режим Выход из полноэкранного режима

Итак, как получить эти значения и вывести их на консоль? Нам нужно взаимодействовать с обещанием, поэтому мы используем .then(), и все, что в нем находится, будет запущено для resolve. Для получения отклоненного значения мы используем .catch().

let flag = true ;
    if(flag){
        resolve("Promise Created")
    }else{
        reject("Promise Not Created")
    }
}).then((message) =>{
    console.log(message) //  prints Promise Created  ( if flag=true )
}).catch((message)=>{
    console.log(message) //  prints Promise Not Created  ( if flag=false )
})
Вход в полноэкранный режим Выход из полноэкранного режима

Это похоже на обратные вызовы, но имеет более организованный и чистый способ.
Обещания очень удобно использовать, когда вам нужно что-то, что займет много времени, чтобы получить некоторые данные из API и сделать что-то с данными внутри .then() или получить ошибку внутри .catch(), если обещание будет отклонено.

Как Promise заменяет обратный вызов?
Давайте рассмотрим пример обратного вызова и то, как он работает, как показано в коде

var flag = true
function getUserName(callback,errorCallback){
    if(flag){
        callback("UserName")
    }else{
        errorCallback(" failed to get UserName ")
    }
}
getUserName(  ("message")=>{
    console.log("success"+message) // print success Username (if flag = true) 
},(error)=>{
    console.log("rejected"+message) // print rejected failed to get Username (if flag = false)
} )
Вход в полноэкранный режим Выйти из полноэкранного режима

Давайте реализуем это в Promise

var flag = true
function getUserName(){
    return new Promise((resovle , reject )=>{
    if(flag){
        resolve("UserName")
    }else{
        reject(" failed to get UserName ")
    }
})  
}
getUserName().then(  ("message")=>{
    console.log("success"+message) // print success Username (if flag = true) 
}).catch((error)=>{
    console.log("rejected"+message) // print rejected failed to get Username (if flag = false)
} )
Вход в полноэкранный режим Выйти из полноэкранного режима

Это очень похоже на обратный вызов, но более читабельно, и мы можем легко выполнить Channing на обещании с помощью функции .then().

Вот и все для Promise, надеюсь, вам понравилось.

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