Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: promise, static

Какие статические методы для работы с промисами есть?

Этот вопрос проверяет знание utility методов класса Promise для работы с коллекциями промисов.

Короткий ответ

Основные статические методы Promise: Promise.all() для ожидания всех промисов, Promise.race() для первого завершившегося, Promise.allSettled() для всех результатов (успешных и неудачных), Promise.any() для первого успешного, Promise.resolve() и Promise.reject() для создания сразу resolved/rejected промисов.

Длинный ответ

Статические методы Promise предоставляют мощные инструменты для работы с множеством асинхронных операций.

Методы для коллекций:

Promise.all() - все успешно:

const promises = [
  fetch('/api/users'),
  fetch('/api/products'),
  fetch('/api/orders')
];

Promise.all(promises)
  .then(([users, products, orders]) => {
    // Все промисы выполнены успешно
  })
  .catch(error => {
    // Хотя бы один промис отклонен
  });

Promise.race() - первый завершившийся:

const timeout = new Promise((_, reject) => {
  setTimeout(() => reject(new Error('Timeout')), 5000);
});

Promise.race([fetch('/api/data'), timeout])
  .then(data => {
    // fetch завершился раньше timeout
  })
  .catch(error => {
    // timeout сработал раньше
  });

Promise.allSettled() - все результаты:

const promises = [promise1, promise2, promise3];

Promise.allSettled(promises)
  .then(results => {
    results.forEach(result => {
      if (result.status === 'fulfilled') {
        console.log('Успех:', result.value);
      } else {
        console.log('Ошибка:', result.reason);
      }
    });
  });

Promise.any() - первый успешный:

const mirrors = [
  fetch('https://mirror1.com/data'),
  fetch('https://mirror2.com/data'),
  fetch('https://mirror3.com/data')
];

Promise.any(mirrors)
  .then(data => {
    // Первый успешный ответ
  })
  .catch(errors => {
    // Все промисы отклонены
  });

Методы создания:

Promise.resolve() - успешный промис:

const resolved = Promise.resolve(42);
// Эквивалентно: new Promise(resolve => resolve(42))

// Использование для кэширования
const cache = new Map();
function getData(key) {
  if (cache.has(key)) {
    return Promise.resolve(cache.get(key));
  }
  return fetchData(key);
}

Promise.reject() - промис с ошибкой:

const rejected = Promise.reject(new Error('Failure'));
// Эквивалентно: new Promise((_, reject) => reject(error))

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#promise

#static

Подпишись на React Developer в телеграм