Логотип 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


В каком порядке выполняются then, catch и finally у Promise

Почему then и finally выполняются после синхронного кода?

Как ведет себя return внутри finally?

Почему finally важен при работе с асинхронным кодом?

  • Рейтинг:

    5

  • Сложность:

    8

then вызывается при успешном выполнении Promise, catch — при ошибке, а finally — всегда, независимо от результата. finally выполняется после then или catch, но не меняет значение, если сам не выбрасывает ошибку. Все эти колбэки выполняются как микротаски. Порядок строго следует цепочке.

Подробнее
  • Рейтинг:

    5

  • Сложность:

    8

then и finally выполняются после синхронного кода, потому что они ставятся в очередь микрозадач. JavaScript сначала выполняет весь синхронный код в текущем стеке вызовов. Только после этого event loop начинает обрабатывать микрозадачи. Поэтому обработчики промисов всегда выполняются “чуть позже”.

Подробнее
  • Рейтинг:

    3

  • Сложность:

    5

Если в блоке finally есть оператор return, он переопределит результат, возвращаемый из блока try или catch. Это означает, что значение, возвращаемое из try или catch, будет проигнорировано, и функция вернет значение из finally. Такое поведение может быть неочевидным и часто считается антипаттерном, так как скрывает исходный результат выполнения или ошибку.
Подробнее
  • Рейтинг:

    4

  • Сложность:

    4

Блок finally гарантирует выполнение кода после завершения асинхронной операции, независимо от того, завершилась она успешно или с ошибкой. Это важно для освобождения ресурсов, закрытия соединений или скрытия индикаторов загрузки. В отличие от then и catch, finally выполняется всегда, даже если в них возникло исключение.
Подробнее