Промисы JavaScript — это мощный инструмент для работы с асинхронным кодом. Обещания предоставляют способ согласованной и предсказуемой обработки результатов асинхронных операций, таких как сетевые запросы или пользовательский ввод.

В этой статье исследуется концепция промисов JavaScript и обсуждается, как их можно использовать для написания более чистого и управляемого кода. Он объясняет все, что касается обещаний JavaScript, с примерами кода, чтобы помочь любому разработчику начать работу.

Давайте приступим!

#1.0 Понимание промисов JavaScript

Промисы JavaScript – это относительно новая концепция, которая недавно набрала популярность. Концепция промисов была впервые введена в 1970-х годах, но только в 1990-х обещания стали частью языков программирования. Обещания были добавлены в javascript в стандарте ES6, выпущенном в 2015 году.

Что такое обещание JavaScript?

Обещание JavaScript — это объект, представляющий результат асинхронной (асинхронной) операции. Обещания предоставляют способ обработки асинхронных операций, представляя результат операции. Обещание может находиться в трех состояниях: ожидание выполнения, выполнено или отклонено. Асинхронная операция по-прежнему должна быть завершена, когда обещание ожидает выполнения. Когда обещание выполнено, асинхронная операция завершена успешно, и теперь обещание имеет значение. Когда обещание отклонено, это означает, что асинхронная операция отклонена.

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

Использование промисов javascript очень просто и имеет много преимуществ, что делает его отличной функцией JavaScript. Прежде чем двигаться дальше, важно рассмотреть преимущества использования промисов.

Преимущества использования промисов JavaScript

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

Промисы также упрощают обработку асинхронного кода. Разработчик может начать задачу, не дожидаясь ее завершения, прежде чем перейти к следующей задаче. Это делает коды более эффективными.

Использование промисов может помочь в написании более чистого и организованного кода. Это также может сделать код более надежным и легким для отладки. Использование промисов — отличный способ начать улучшать код JavaScript и разработку.

Как работает промис JavaScript

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

Обещание JavaScript создается для ожидания асинхронной операции, то есть чего-то, что произойдет в будущем. Операция обещания развивается вокруг трех состояний:

  1. Ожидание: асинхронная операция еще не завершена.
  2. Выполнено: асинхронная операция успешно завершена.
  3. Отклонено: асинхронная операция завершилась неудачно.

Когда обещание javascript находится на рассмотрении, оно ждет; он имеет неопределенное значение, т. е. результат не определен. Он ожидает асинхронного значения для работы. Он переключается либо в выполненное, либо в отклоненное состояние сразу после получения значения. Как пояснялось выше, выполненное состояние означает, что было получено значение, и операция была успешно выполнена с полученным значением. Напротив, отклоненное состояние означает, что операция не удалась, что приводит к объекту ошибки.

Сейчас! Пришло время рассмотреть, как создать и использовать эту удивительную функцию javascript.

Создание обещания JavaScript: жизненный цикл

JavaScript Promise используется для асинхронного выполнения обещаний; он либо выполняется, либо отклоняется после получения значения для работы. Вот как эффективно создавать и использовать обещания javascript; обращать внимание.

Создайте обещание JavaScript

Обещание JavaScript создается с помощью конструктора Promise(). Конструктор Promise() принимает в качестве аргумента функцию, называемую функцией-исполнителем, поскольку от нее зависит операция обещания. Вот синтаксис:

const promise = new Promise(function(resolve, reject) {
  // Code to execute
});

Функция исполнителя – это функция обратного вызова, используемая для выполнения обещания; обещание зависит от этого. Функция-исполнитель принимает два аргумента, разрешить и отклонить, которые в дальнейшем используются для выполнения или отклонения обещания. Обещание находится в состоянии ожидания сразу после его создания или непосредственно перед использованием аргументов разрешения и отклонения для создания функций. Например, вот обещание выплатить зарплату сотруднику в зависимости от рабочего времени сотрудника:

const paySalary = new Promise((resolve, reject)=>{
    let workingHours = 40;
    let salary = 1500;
})

Выше обещание javascript в состоянии ожидания. Далее стоит выполнить обещание или отказаться от него. Вот как это сделать.

Как выполнить и отклонить обещание JavaScript

Обещание JavaScript — это объект, который представляет возможное завершение (или сбой) асинхронной операции и ее результирующее значение. Промисы — это шаблон, который помогает управлять асинхронным кодом, упрощая его написание и анализ.

Вот пример того, как создать и выполнить промис в JavaScript:

const myPromise = new Promise((resolve, reject) => {
  // perform some asynchronous operation

  if (/* operation was successful */) {
    // resolve the Promise with a value
    resolve(value);
  } else {
    // otherwise, reject the Promise with an error
    reject(error);
  }
});

Функция resolve вызывается для выполнения промиса со значением, а функция reject вызывается для отклонения промиса с ошибкой. Ниже приведен блок кода для выполнения или отклонения нашего обещания paySalary.

const paySalary = new Promise((resolve, reject)=>{
    let workingHours = 40;
    let salary = 1500;
    if(workingHours >= 40){
        resolve(`Congrats! You will be paid $${salary}, send invoice to the HR.`);
    } else{
        reject(`Sorry! Kindly visit the HR to know how much you will be paid for the month.`)
    }
})

Теперь обещание paySalary может быть выполнено или отклонено. Что приходит на ум после этого? Можно ли обработать значение или ошибку после того, как обещание будет разрешено или отклонено?

Обработка значения или ошибки после выполнения или отклонения обещания JavaScript

Чтобы использовать значение или обработать ошибку после разрешения или отклонения промиса, для промиса используется метод then. Метод then принимает два аргумента: функцию обратного вызова, которая выполняется, когда обещание выполнено, и функцию обратного вызова, которая выполняется, когда обещание отклонено. Вот синтаксис:

promise.then(
  function(result) { 
   // code to handle the fulfillment value
},
 function(error) {
  // code to handle the error
}
  );

 // or using arrow fnctions

  promise.then(
  (result) => { 
      // code to handle the fulfillment value  },
  (error) => { 
    // code to handle the error
  }

В качестве альтернативы функция обратного вызова может быть разделена на две; используя метод then для обработки выполнения и метод catch для обработки отказа.

promise.then(result => {
  // code to handle the fulfillment value
});

promise.catch(error => {
  // code to handle the error
});

Более того, функции обратного вызова выполнения и отклонения могут быть объединены в цепочку:

myPromise.then((value) => {
  // code to handle the fulfillment value
}).catch((error) => {
  // code to handle the error
});

Промисы можно объединять в цепочку с помощью затем и catch, что позволяет писать асинхронный код, который легче читать и поддерживать.

Пришло время выполнить обещание paySalary:

const paySalary = new Promise((resolve, reject)=>{
    let workingHours = 40;
    let salary = 1500;
    if(workingHours >= 40){
        resolve(`Congrats! You will be paid $${salary}, send invoice to the HR.`);
    } else{
        reject(`Sorry! Kindly visit the HR to know how much you will be paid for the month.`)
    }
})

paySalary.then((result) => {
    console.log(result);
  }).catch((error) => {
    console.log(error);
  });

// Result

// Congrats! You will be paid $1500, send an invoice to the HR.

Заворачивать

Обещания JavaScript — полезный инструмент для управления асинхронным кодом в JavaScript. Они предоставляют способ обработки асинхронных операций, представляя результат операции, которая может быть еще недоступна. Промисы позволяют вам писать код, который легче читать и поддерживать, предотвращая проблему ада обратных вызовов. Обещания можно использовать во многих приложениях для повышения общей производительности и удобства работы пользователей. В целом, обещания JavaScript являются важной частью экосистемы JavaScript, и их стоит изучить, если вы являетесь разработчиком JavaScript.