Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Специализация

Python Backend Developer

Java Backend Developer

Node.js Backend Developer

Golang Backend Developer

React Frontend Developer

Посмотреть все

Выберите навыки

React

React

JavaScript

JavaScript

Git

Git

Redux

Redux

Webpack

Webpack

Посмотреть все

Сложность

1-3

4-6

7-8

9-10

Рейтинг вопросов

1

2

3

4

5

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

Вопросы React Frontend Developer


Объясните разницу между последовательным и параллельным выполнением асинхронных функций. Как работают Promise.all() и Promise.allSettled()?

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

Метод Promise.all() запускает несколько промисов параллельно и возвращает результат, когда все они успешно завершатся, а Promise.allSettled() возвращает результат независимо от того, завершился ли каждый промис успехом или ошибкой.

Подробнее

Есть два параллельных запроса: один возвращает A, другой B. Как получить их результаты и объединить A и B, если нельзя использовать Promise.all?

Для объединения результатов двух параллельных запросов без Promise.all можно использовать: счетчик завершения, async/await с отдельными await, Promise.race для контроля времени, или ручное создание промисов с отслеживанием состояния. Также подходят библиотеки как RxJS или кастомная реализация механизма ожидания.

Подробнее

Как реализовать аналог Promise.all вручную?

Аналог Promise.all можно реализовать, создав новый Promise и вручную отслеживая выполнение всех переданных Promise. Нужно сохранить результаты в массив в правильном порядке и считать количество завершённых операций. Если хотя бы один Promise отклоняется, итоговый Promise должен сразу перейти в состояние rejected. Это демонстрирует понимание базовой модели Promise.

Подробнее

В чем особенность Promise.all при ошибке одного из промисов?

Promise.all ожидает выполнения всех переданных промисов. Если хотя бы один промис завершится с ошибкой (rejected), то весь Promise.all немедленно завершается с этой ошибкой, игнорируя результаты остальных промисов (даже если они успешно завершились). Это поведение называется "быстрым отказом" (fail-fast). Для обработки ошибок без прерывания всего процесса можно использовать Promise.allSettled.
Подробнее

Какие есть альтернативы Promise.all?

Основные альтернативы Promise.all — это Promise.allSettled, Promise.race и Promise.any. Promise.allSettled ждёт завершения всех промисов, независимо от их статуса (успех или ошибка), и возвращает массив результатов с информацией о каждом. Promise.race возвращает результат первого завершившегося промиса (успешного или с ошибкой). Promise.any возвращает результат первого успешно выполнившегося промиса, а если все завершатся с ошибкой, то возвращает AggregateError. Эти методы дают более гибкий контроль над асинхронными операциями.
Подробнее

Как корректно обернуть не-промисные значения в кастомной реализации Promise.all?

Как обеспечить сохранение порядка результатов в кастомной реализации Promise.all при асинхронном выполнении промисов?

Как совместить Promise.all и Promise.race для реализации логики: «выполнить все запросы, но прервать, если они занимают дольше заданного времени»?

  • Рейтинг:

    4

  • Сложность:

    5

Для корректной обработки не-промисных значений в кастомной реализации Promise.all необходимо обернуть каждое значение в Promise.resolve(). Это гарантирует, что все элементы массива будут промисами, даже если изначально они являются обычными значениями. Затем можно использовать Promise.all или реализовать собственную логику ожидания всех промисов.
Подробнее
  • Рейтинг:

    4

  • Сложность:

    6

Для сохранения порядка результатов в кастомной реализации Promise.all нужно создать массив результатов фиксированной длины и присваивать каждому результату индекс, соответствующий исходному порядку промисов. При разрешении каждого промиса результат записывается в ту же позицию, что и исходный промис. После завершения всех промисов возвращается массив с сохранённым порядком.
Подробнее
  • Рейтинг:

    4

  • Сложность:

    6

Можно создать массив промисов и передать его в Promise.all, а затем обернуть результат в Promise.race с промисом таймаута. Если таймаут срабатывает раньше, Promise.race завершается с ошибкой, что прерывает выполнение. Это позволяет ограничить общее время выполнения группы запросов.
Подробнее
  • Рейтинг:

    3

  • Сложность:

    7

  • Рейтинг:

    4

  • Сложность:

    6

  • Рейтинг:

    4

  • Сложность:

    8

  • Рейтинг:

    4

  • Сложность:

    3

  • Рейтинг:

    4

  • Сложность:

    3