Ответ
Promise (Обещание) — это объект в JavaScript, представляющий результат (успешный или неудачный) асинхронной операции, которая завершится в будущем. Он является фундаментальной частью работы с асинхронностью в Node.js.
Состояния Promise:
pending(ожидание): Начальное состояние, операция еще не завершена.fulfilled(выполнено): Операция завершилась успешно. Promise переходит в это состояние при вызовеresolve(value).rejected(отклонено): Операция завершилась с ошибкой. Promise переходит в это состояние при вызовеreject(error).
Пример создания и использования:
const readFileAsync = (filename) => {
return new Promise((resolve, reject) => {
fs.readFile(filename, 'utf8', (err, data) => {
if (err) {
reject(new Error(`Failed to read file: ${err.message}`));
} else {
resolve(data);
}
});
});
};
// Использование с цепочкой .then() и .catch()
readFileAsync('config.json')
.then(data => {
console.log('File content:', data);
return JSON.parse(data);
})
.then(config => console.log('DB Host:', config.dbHost))
.catch(error => console.error('Error:', error.message));
Ключевые преимущества для Node.js:
- Избегание "Callback Hell": Позволяет структурировать асинхронный код более линейно и читаемо.
- Цепочки вызовов: Методы
.then()всегда возвращают новый Promise, что позволяет строить последовательности асинхронных операций. - Централизованная обработка ошибок: Все ошибки в цепочке можно перехватить одним блоком
.catch()в конце. - Интеграция с async/await: Promise — основа для синтаксиса
async/await, который делает асинхронный код похожим на синхронный.
Статические методы для работы с коллекциями Promise:
Promise.all([p1, p2]): Ждет выполнения всех промисов. Если один отклоняется — вся операция отклоняется.Promise.allSettled([p1, p2]): Ждет завершения всех промисов (успех или ошибка) и возвращает массив с результатами каждого.Promise.race([p1, p2]): Возвращает результат первого завершившегося промиса (fulfilled или rejected).
Видео-ответы
▶
РЕАЛЬНОЕ JS собеседование Frontend TeamLead
▶
SENIOR В 20 ЛЕТ / Frontend React мок-собеседование
▶
ДОПРОС СБЕРА 3 ЭТАПА и ОФФЕР. FRONTEND СОБЕСЕДОВАНИЕ на 310К
▶
ДАЛИ ОТКАЗ ИЗ-ЗА СЛИШКОМ ХОРОШИХ ОТВЕТОВ!? РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ FRONTEND НА 300К В СБЕР
▶
РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА MIDDLE FRONTEND РАЗРАБОТЧИКА | JAVASCRIPT REACT
▶
СОБЕСЕДОВАНИЕ В СБЕР НА MIDDLE REACT FRONTEND. ПРОСТОЙ СОБЕС НА 200К
▶
Открытое собеседование на Frontend разработчика
▶
Middle за год? Собеседование #3 frontend разработчика
▶
СОБЕСЕДОВАНИЕ REACT Middle Frontend Разработчика + LIVE CODING
▶
#12 Фронтенд-разработчик нейросети на собеседовании Frontend Middle
▶
#2 Собеседование смелого Frontend Middle разработчика
▶
Фронтенд собеседование 2025 | Junior Frontend | Реальные вопросы и задачи React собеседование
▶
Что должен знать frontend стажер в 2025? | Front-end собеседование
▶
Собеседование frontend junior разработчика (CSS, HTML, JS, React, Typescript)
▶
Frontend собеседование с лайвкодингом. Не дала себя запутать.
▶
Техническое собеседование с подписчиком на frontend intern/junior: JS, React, Next, HTML, CSS, REST
▶
Тестовое собеседование с подписчиком JavaScript, TypeScript, Node.js, Next.js, React.js, Git, Prisma
▶
Тестовое собеседование #2. Вопрос по JavaScript на техническом интервью Junior Frontend разработчика
▶
Frontend собеседование. Пятеро на одного. Устоял или сдался?
▶
Гений фронтенда в 17 лет? Реальное собеседование 12
▶
Собеседование frontend разработчика 2024
▶
Собеседование frontend разработчика #8 индивидуальное менторство
▶
За 6 месяцев во frontend? Реальное собеседование frontend разработчика
▶
Собеседование frontend стажера 2023
▶
Талант в 18 лет? Собеседование #2 frontend разработчика
▶
Собеседование frontend разработчика
▶
Tech Interview Fest | Моковое cобеседование для Angular Junior | Solvery + Angular_ru