Шаблон для кэширования ресурсов

#javascript #design-patterns

#javascript #шаблоны проектирования

Вопрос:

У меня есть игра с изображениями — я хотел бы кэшировать их молча перед началом игр. Таким образом, у меня может быть два сценария:

  1. код был загружен
  2. кэширование запущено
  3. кэширование завершено
  4. пользователь запустил игру
  5. запустите игру

или

  1. код был загружен
  2. кэширование запущено
  3. пользователь запустил игру -> отображается прогресс
  4. кэширование завершено
  5. запустите игру

Во втором случае я мог бы передать функции кэширования обратный вызов для запуска игры. Но поскольку может произойти первый случай, я не могу этого сделать, потому что мне также нужно дождаться пользователя.

Итак, теперь я думаю о наличии глобальной (ой) переменной, которая будет обратным onGameStart вызовом. По умолчанию он будет отображать прогресс, но кэширование обратного вызова будет выполнять две вещи: сброс onGameStart к фактическому запуску игры и проверка того, была ли запущена игра, если она была запущена, она продолжится немедленно.

Я что-то пропустил? Это правильный шаблон?

Комментарии:

1. Придирки: это не кэширование.

2. @DavidEhrmann, предварительная выборка?

3. Это просто загрузка ресурсов. Кэширование вступает в игру, когда вам снова понадобится ресурс при последующих загрузках.

Ответ №1:

Как насчет ResourceObserver, который получает уведомление, когда ResourceManager извлек все ресурсы? Тогда ваша игра сохраняет состояние, и если пользователь запускает игру до уведомления, используйте уведомления о ходе выполнения для обновления экрана, в противном случае просто переходите к игре.

TL; DR: наблюдатель конечный автомат.