Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое промис и для чего он нужен?
Промис (Promise) — это объект, представляющий результат асинхронной операции, который может завершиться успешно (с результатом) или с ошибкой. Промисы помогают избежать "callback hell" и позволяют писать асинхронный код в более управляемой и линейной форме.
Расскажите про все методы Promise?
Основные методы промиса включают: then() — для обработки успешного выполнения, catch() — для обработки ошибок, finally() — для выполнения кода по завершению промиса, независимо от результата. Есть также методы Promise.all(), Promise.race(), Promise.allSettled() и Promise.any(), которые позволяют работать с несколькими промисами одновременно.
В чем различие между Observable и Promise? Где применяется каждый из этих паттернов?
Promise — это объект, который работает с одним значением или ошибкой, и его результат может быть получен только один раз. Он идеален для однократных асинхронных операций, таких как запросы к API. Observable позволяет работать с множественными значениями и управлять подписками на поток данных, что делает его полезным для событий, потоков данных или длительных операций. Основное различие — в многократности значений и возможностях управления потоком.
Объясните разницу между последовательным и параллельным выполнением асинхронных функций. Как работают Promise.all() и Promise.allSettled()?
Последовательное выполнение асинхронных функций означает, что каждая следующая функция начинается только после завершения предыдущей, тогда как параллельное выполнение позволяет нескольким функциям выполняться одновременно.
Метод Promise.all() запускает несколько промисов параллельно и возвращает результат, когда все они успешно завершатся, а Promise.allSettled() возвращает результат независимо от того, завершился ли каждый промис успехом или ошибкой.
Блокирует ли тяжелый код в Promise рендер страницы?
Да, блокирует. Promise не делает код асинхронным сам по себе — он лишь откладывает его выполнение. Если внутри промиса есть сложные вычисления (например, цикл), они будут выполняться в основном потоке и заморозят интерфейс.
Что такое Promise?
Почему async/await вместо Promises?
На смену чего пришли промисы и какие у них основные состояния?
Какие статические методы для работы с промисами есть?
Есть два параллельных запроса: один возвращает A, другой B. Как получить их результаты и объединить A и B, если нельзя использовать Promise.all?
Рейтинг:
4
Сложность:
4
Promise (Обещание) — это объект, который представляет результат асинхронной операции. Он может находиться в одном из трех состояний: ожидание (pending), успех (fulfilled) или ошибка (rejected). Промисы помогают избежать "ада колбэков" и делают код чище.
Рейтинг:
2
Сложность:
6
async/await делает асинхронный код:
Читаемым (похож на синхронный).
Удобным для отладки (стек вызовов не «разрывается»).
Лёгким в обработке ошибок (через try/catch).
Рейтинг:
3
Сложность:
6
Промисы пришли на смену callback hell и предоставили более чистый способ работы с асинхронными операциями. Промис имеет три состояния: pending (ожидание), fulfilled (выполнено успешно) и rejected (выполнено с ошибкой). После перехода в fulfilled или rejected состояние промиса больше не меняется.
Рейтинг:
2
Сложность:
6
Основные статические методы Promise: Promise.all() для ожидания всех промисов, Promise.race() для первого завершившегося, Promise.allSettled() для всех результатов (успешных и неудачных), Promise.any() для первого успешного, Promise.resolve() и Promise.reject() для создания сразу resolved/rejected промисов.
Рейтинг:
4
Сложность:
6
Для объединения результатов двух параллельных запросов без Promise.all можно использовать: счетчик завершения, async/await с отдельными await, Promise.race для контроля времени, или ручное создание промисов с отслеживанием состояния. Также подходят библиотеки как RxJS или кастомная реализация механизма ожидания.
Рейтинг:
5
Сложность:
5
Рейтинг:
5
Сложность:
6
Рейтинг:
3
Сложность:
8
Рейтинг:
3
Сложность:
7
Рейтинг:
3
Сложность:
8