Код Middle Разминка: короткие функции обновлено

onceAsync

Условие

Обёртка запускает асинхронную fn только один раз; все вызовы получают один и тот же промис, включая параллельные.

Что проверяют тесты

  • вызывается один раз

  • все получают один результат

  • параллельные вызовы до разрешения

Как подойти

Кэш результата не спасает от параллельных вызовов: второй придёт до того, как первый успел разрешиться. Кэш промиса закрывает и это. Так делают единичную инициализацию - загрузку конфига, установку соединения.

Подсказки: 1
  1. Кэшируй сам промис, а не результат.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.