Встречается на собеседованиях • сегодня
Можно ли перезапустить rejected Promise
Нет, rejected Promise нельзя перезапустить напрямую. После перехода в состояние rejected или fulfilled, Promise становится неизменным (immutable).
Однако можно создать новый Promise, который будет повторять исходную операцию. Например:
javascript
function retryPromise(fn, retries = 3) {
return new Promise((resolve, reject) => {
fn()
.then(resolve)
.catch(err => {
if (retries > 0) {
console.log(`Retrying... (${retries} left)`);
retryPromise(fn, retries - 1).then(resolve, reject);
} else {
reject(err);
}
});
});
}Использование:
javascript
retryPromise(() => fetch('https://api.example.com/data'))
.then(data => console.log(data))
.catch(err => console.error('Failed after retries', err));Также существуют библиотеки (like p-retry), которые предоставляют более продвинутые механизмы повторных попыток.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы