JavaScript
Средний
Что такое промисы? Какие методы промисов вы знаете?
Промисы в JavaScript
Определение:
Promise — объект, представляющий результат асинхронной операции.
Состояния:
- pending — ожидание
- fulfilled — успех
- rejected — ошибка
Создание:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
if (success) {
resolve("Data");
} else {
reject(new Error("Failed"));
}
}, 1000);
});
Методы экземпляра:
then()
promise
.then(result => {
console.log(result);
return processedResult;
})
.then(processed => {
// Цепочка
});
catch()
promise
.then(result => process(result))
.catch(error => console.error(error));
finally()
promise
.then(result => use(result))
.catch(error => handle(error))
.finally(() => cleanup()); // Всегда выполняется
Статические методы:
Promise.all()
// Все должны успешно завершиться
const results = await Promise.all([
fetch('/api/users'),
fetch('/api/posts'),
fetch('/api/comments')
]);
// Если один reject — всё reject
Promise.allSettled()
// Ждёт все, независимо от результата
const results = await Promise.allSettled([
Promise.resolve(1),
Promise.reject('error'),
Promise.resolve(3)
]);
// [{status: 'fulfilled', value: 1},
// {status: 'rejected', reason: 'error'},
// {status: 'fulfilled', value: 3}]
Promise.race()
// Первый завершившийся (успех или ошибка)
const fastest = await Promise.race([
fetch('/api/server1'),
fetch('/api/server2')
]);
Promise.any()
// Первый успешный (игнорирует reject)
const first = await Promise.any([
fetch('/api/main'),
fetch('/api/fallback')
]);
// AggregateError если все reject
Promise.resolve() / Promise.reject()
const resolved = Promise.resolve(42);
const rejected = Promise.reject(new Error("Failed"));
async/await:
async function fetchData() {
try {
const response = await fetch('/api/data');
const data = await response.json();
return data;
} catch (error) {
console.error(error);
}
}
Похожие вопросы
Готовитесь к собеседованию?
ENIGMA AI — невидимый ИИ-помощник для технических интервью
Попробовать бесплатно