Объясните, что произойдёт с Promise-обёрткой, если asyncCall по ошибке вызовет переданный callback несколько раз: сначала с ошибкой, затем с данными и затем снова с ошибкой.

Promise меняет состояние только один раз: если первый callback вызвал reject, последующие resolve и reject уже не изменят результат.

Короткий ответ

Что ответить на собеседовании

Promise меняет состояние только один раз: если первый callback вызвал reject, последующие resolve и reject уже не изменят результат.

Подробный разбор

Ответ с пояснениями

Promise меняет состояние только один раз: если первый callback вызвал reject, последующие resolve и reject уже не изменят результат.

Это не останавливает сам callback и его побочные эффекты. В обёртке важно завершать ветку ошибки через return, чтобы не выполнять дальнейшую обработку. Если нужно запретить повторную работу целиком, добавляют отдельную защиту вызова, а не полагаются только на Promise.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее