Специализация
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 в телеграм
Для чего нужны Async/await?
async/await — это синтаксис, который упрощает работу с промисами, делая асинхронный код более похожим на синхронный. Функция с ключевым словом async всегда возвращает промис, а await приостанавливает выполнение функции до получения результата промиса. Это делает код более читаемым и упрощает обработку ошибок.
Как обработать ошибку в промисах без catch, используя только then?
Второй аргумент then — это аналог catch:
promise.then(
result => console.log(result),
error => console.error(error) // Обработка ошибки
);Почему async/await вместо Promises?
async/await делает асинхронный код:
Читаемым (похож на синхронный).
Удобным для отладки (стек вызовов не «разрывается»).
Лёгким в обработке ошибок (через try/catch).
Почему недостаточно лочить только запись? (check-then-act под замком)
Проверка и действие должны быть в одной критической секции. Если проверку делать без блокировки, то два запроса могут пройти проверку и оба записать, нарушив инвариант.
В каком порядке выполняются setTimeout и Promise.then?
Promise.then всегда выполняется раньше, чем setTimeout, даже если таймер имеет задержку 0. Это происходит потому, что then попадает в очередь microtasks, а setTimeout — в очередь macrotasks. После завершения синхронного кода event loop сначала очищает очередь microtasks, и только потом берёт следующую macrotask.
Чем async/await отличается от .then()?
В каком порядке выполняются then, catch и finally у Promise
Можно ли выбросить ошибку внутри then и как она будет обработана
Почему then и finally выполняются после синхронного кода?
Почему Promise.then попадает в очередь microtasks?
Рейтинг:
5
Сложность:
5
async/await и .then() работают поверх Promise и дают одинаковые возможности. Разница в том, что async/await позволяет писать асинхронный код в синхронном стиле, улучшая читаемость. .then() использует цепочки колбэков и чаще приводит к вложенности. С точки зрения выполнения и производительности они эквивалентны.
Рейтинг:
5
Сложность:
8
then вызывается при успешном выполнении Promise, catch — при ошибке, а finally — всегда, независимо от результата. finally выполняется после then или catch, но не меняет значение, если сам не выбрасывает ошибку. Все эти колбэки выполняются как микротаски. Порядок строго следует цепочке.
Рейтинг:
5
Сложность:
7
Да, внутри then можно выбросить ошибку с помощью throw. Такая ошибка автоматически превращает Promise в rejected. Она будет поймана ближайшим catch ниже по цепочке. По сути, throw внутри then эквивалентен return Promise.reject(error).
Рейтинг:
5
Сложность:
8
then и finally выполняются после синхронного кода, потому что они ставятся в очередь микрозадач. JavaScript сначала выполняет весь синхронный код в текущем стеке вызовов. Только после этого event loop начинает обрабатывать микрозадачи. Поэтому обработчики промисов всегда выполняются “чуть позже”.
Рейтинг:
5
Сложность:
9
Promise.then попадает в microtask queue, чтобы выполняться сразу после текущего синхронного кода. Это даёт более высокий приоритет по сравнению с macrotasks. Такой механизм обеспечивает предсказуемость и согласованность асинхронного поведения. Он позволяет Promise работать быстрее, чем таймеры. Это важная часть спецификации JavaScript.
Рейтинг:
4
Сложность:
4
Рейтинг:
3
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
6