Встречается на собеседованиях • сегодня

Можно ли перезапустить 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), которые предоставляют более продвинутые механизмы повторных попыток.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы