Sobes.tech
Middle
95
questionbank

Как работает Promise в JavaScript?

Ответ от нейросети

sobes.tech AI

  • Объект, представляющий возможное конечное завершение (или сбой) асинхронной операции и ее результирующее значение.
  • Состояния промиса:
    • pending: начальное состояние, ни выполнен, ни отклонен.
    • fulfilled: означает, что операция успешно завершена.
    • rejected: означает, что операция завершилась ошибкой.
  • Переход из состояния pending в fulfilled или rejected происходит однократно и необратимо.
  • Методы:
    • .then(onFulfilled, onRejected): Принимает две функции обратного вызова. Первая (onFulfilled) вызывается при успешном завершении, вторая (onRejected) - при ошибке. Оба аргумента опциональны. Возвращает новый промис.
    • .catch(onRejected): Сокращенная запись .then(null, onRejected). Предназначен для обработки ошибок. Возвращает новый промис.
    • .finally(onFinally): Вызывается независимо от результата промиса (успех или ошибка). Полезен для очистки ресурсов. Возвращает новый промис.
  • Создание промиса:
new Promise((resolve, reject) => {
  // Асинхронная операция
  const success = true;
  if (success) {
    resolve("Операция успешна!"); // Перевод в состояние fulfilled
  } else {
    reject("Что-то пошло не так..."); // Перевод в состояние rejected
  }
});
  • Цепочки промисов: .then(), .catch(), .finally() возвращают промисы, что позволяет создавать цепочки для последовательного выполнения асинхронных операций.
fetch(url)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Ошибка:', error));