20 вопросов
Практика
Какие существуют различные методы обработки отклонения промисов и ошибок в цепочках JavaScript Promise без использования синтаксиса async/await?
Можешь объяснить, что такое Promise в JavaScript, включая его три возможных состояния и как его создавать и использовать?
Чем отличается поведение `Promise.all()` от `Promise.allSettled()` с точки зрения обработки ошибок и результатов выполнения?
Можешь объяснить, как работает `Promise.race()`, и описать практический пример использования в JavaScript приложении?
Можешь ли ты объяснить механизмы `async/await` в JavaScript, включая то, как `async` функции работают с Promises и как `await` контролирует поток выполнения?
Какой подход ты используешь при реализации обработки ошибок при работе с async/await в JavaScript?
Каковы различия между выполнением нескольких промисов параллельно и последовательно, и когда следует использовать каждый подход?
Как Promises и синтаксис async/await улучшают читаемость кода по сравнению с традиционными вложенными callback-паттернами в JavaScript?
Как функционирует ограничитель конкурентности при управлении одновременным выполнением Promise, и какую проблему он решает?
Можешь объяснить разницу между microtasks и macrotasks в JavaScript, включая порядок их выполнения в event loop?
Как event loop в JavaScript управляет асинхронными операциями в однопоточной среде, и в каком порядке выполняются call stack, microtasks и macrotasks?
Объясни порядок выполнения следующего JavaScript кода и опиши, как event loop определяет, когда выполняется каждое выражение. ```javascript console.log("Start"); setTimeout(() => console.log("Timeout"), 0); Promise.resolve().then(() => console.log("Promise")); console.log("End"); ```
Можешь объяснить, как работает call stack в JavaScript, включая то, как функции добавляются и удаляются, и что происходит, когда он превышает максимальный размер?
Можешь объяснить, как JavaScript обрабатывает одновременное выполнение задач через event loop, и чем это отличается от истинного параллельного выполнения, которое достигается через Web Workers?
Какие ключевые архитектурные различия между event loop в Node.js и event loop в браузере, особенно в контексте их фаз, callback queues и порядка выполнения асинхронных операций?
Можешь объяснить назначение и поведение функции `queueMicrotask()` в JavaScript, и чем она отличается от других асинхронных паттернов, например колбэков на основе Promise?
Можешь объяснить, как выполняются блоки `try`, `catch` и `finally` в JavaScript и для чего они нужны?
Можешь описать разные типы ошибок в JavaScript, включая встроенные типы ошибок и то, как создавать кастомные ошибки?
Как бы ты реализовал пользовательский класс ошибки в JavaScript, который расширяет встроенный объект Error и включает дополнительные свойства помимо стандартного сообщения об ошибке?
Чем отличаются `throw` и `return` в своём поведении при обработке ошибок и управлении потоком выполнения в JavaScript, особенно в синхронных функциях и async функциях?