Код Middle Реализация с нуля обновлено
Отменяемая операция
Условие
Напиши makeCancelable(promise): вернуть {promise, cancel}. После cancel() итоговый промис отклоняется объектом {canceled: true}, а исходный результат игнорируется.
Что проверяют тесты
обычный результат проходит
после cancel результат игнорируется
ошибка пробрасывается
Как подойти
Промис неотменяем по спецификации: мы отменяем не работу, а подписку. Флаг canceled + проверка в обоих обработчиках. Настоящая отмена сетевого запроса - это AbortController и signal, проговори это вслух как follow-up.
Подсказки: 2
- Промис нельзя отменить - можно только перестать реагировать на его результат.
- Флаг в замыкании проверяется в обоих колбэках.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.