Пример ответа
Коротко: Promise — это объект в JavaScript, представляющий результат асинхронной операции, который может быть выполнен (resolved) или отклонён (rejected). В моём опыте я использовал их для обработки HTTP-запросов, управления состоянием приложений и работы с API.
Ключевые идеи:
- Promise имеет три состояния: pending, fulfilled и rejected, что помогает управлять асинхронным кодом.
- Методы then(), catch() и finally() позволяют обрабатывать результаты и ошибки, делая код более читаемым.
- Promise поддерживают цепочки (chaining) для последовательного выполнения асинхронных операций.
Пример: Например, при загрузке данных с сервера: fetch('https://api.example.com/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Ошибка:', error)).
Пример создания и использования Promise для имитации асинхронной операции с задержкой.
javascript
// Создание Promise для имитации загрузки данных
const loadData = new Promise((resolve, reject) => {
setTimeout(() => {
const success = true; // Имитация успешного выполнения
if (success) {
resolve({ message: 'Данные успешно загружены', data: [1, 2, 3] });
} else {
reject(new Error('Не удалось загрузить данные'));
}
}, 2000); // Задержка 2 секунды
});
// Использование Promise с обработкой результатов
loadData
.then(result => {
console.log(result.message); // Вывод: Данные успешно загружены
console.log('Данные:', result.data); // Вывод: Данные: [1, 2, 3]
})
.catch(error => {
console.error('Ошибка:', error.message); // Обработка ошибки
})
.finally(() => {
console.log('Операция завершена'); // Выполняется всегда
});
Вопросы для интервьюера:
- Как вы обрабатываете несколько Promise одновременно? — Я использую Promise.all() для параллельного выполнения и Promise.race() для получения первого результата, что эффективно в моих проектах.
- Какие преимущества async/await перед Promise? — Async/await делает асинхронный код более синхронным и читаемым, упрощая обработку ошибок с try/catch, что я часто применяю.
Практический совет (на неделю):
- Практикуйтесь с Promise на реальных задачах, например, обрабатывая API-запросы в React-приложении.
- Изучите async/await для улучшения читаемости кода, но понимайте, что это синтаксический сахар над Promise.
Frontend Developer
Общий
36%