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

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

  1. В ожидании: исходное состояние. Обещание не выполняется и не отвергается.
  2. Выполнено: состояние, когда обещание выполнено со значением. Это «успешное» состояние.
  3. Отклонено: Состояние, когда обещание отклонено по причине. Это состояние «неудачи».

Обещания создаются с помощью конструктора Promise. Конструктор принимает один аргумент — функцию, называемую «исполнитель». Функция-исполнитель принимает два аргумента: resolve и reject. resolve — это функция, которая вызывается, когда обещание выполнено, а reject — это функция, которая вызывается, когда обещание отклоняется.

Вот пример создания промиса, который выполняется с задержкой в ​​1 секунду:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("Success!");
  }, 1000);
});

Как только обещание создано, вы можете использовать метод .then() для обработки выполненного состояния и метод .catch() для обработки отклоненного состояния.

Вот пример использования .then() и .catch() с объектом myPromise, созданным выше:

myPromise
  .then(result => {
    console.log(result); // "Success!"
  })
  .catch(error => {
    console.error(error); // This will not be called in this example
  });

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