#javascript #design-patterns
#javascript #шаблоны проектирования
Вопрос:
У меня есть игра с изображениями — я хотел бы кэшировать их молча перед началом игр. Таким образом, у меня может быть два сценария:
- код был загружен
- кэширование запущено
- кэширование завершено
- пользователь запустил игру
- запустите игру
или
- код был загружен
- кэширование запущено
- пользователь запустил игру -> отображается прогресс
- кэширование завершено
- запустите игру
Во втором случае я мог бы передать функции кэширования обратный вызов для запуска игры. Но поскольку может произойти первый случай, я не могу этого сделать, потому что мне также нужно дождаться пользователя.
Итак, теперь я думаю о наличии глобальной (ой) переменной, которая будет обратным onGameStart
вызовом. По умолчанию он будет отображать прогресс, но кэширование обратного вызова будет выполнять две вещи: сброс onGameStart
к фактическому запуску игры и проверка того, была ли запущена игра, если она была запущена, она продолжится немедленно.
Я что-то пропустил? Это правильный шаблон?
Комментарии:
1. Придирки: это не кэширование.
2. @DavidEhrmann, предварительная выборка?
3. Это просто загрузка ресурсов. Кэширование вступает в игру, когда вам снова понадобится ресурс при последующих загрузках.
Ответ №1:
Как насчет ResourceObserver, который получает уведомление, когда ResourceManager извлек все ресурсы? Тогда ваша игра сохраняет состояние, и если пользователь запускает игру до уведомления, используйте уведомления о ходе выполнения для обновления экрана, в противном случае просто переходите к игре.
TL; DR: наблюдатель конечный автомат.