Какой есть паттерн для обновления элементов в коллекции?

Приложение внешне похоже на TodoList: пользователь добавляет элементы в список, всё сохраняется на моём сервере.

Отличие от TodoMVC: элементы списка представляют объекты с Третьего сервиса («ТС»), откуда берутся их полные названия. Я храню только id.

При загрузке с моего сервера в клиент приходит список id. Сразу же надо отправить запросы на ТС, чтобы по этим id получить их названия и показывать не «id12345», а «Длинное название» в списке.

У ТС есть свои ограничения на частоту запросов в секунду M и возможность группировать запросы в пачки, не более, чем N. При начальной загрузке списка из 100 элементов, я не могу отправить 100 параллельных ajax запросов в сервис, а только 1 и постараюсь разбить 100 в пачки по 25 и отправлять, замечая время, не более 3 запросов в секунду.

Делаю на Backbone.JS. Реализовал, как мне кажется, довольно велосипедно. Модель элемента списка, если ещё не имеет полного названия, отправляет свой id и свой callback в некий общий диспетчер, который группирует и выстраивает в очередь пачки запросов, и следит за временем запросов к ТС, притормаживая при необходимости. Этот же диспетчер выполняет роль кэша, запоминая все имеющиеся пары (id: название), если они повторно понадобятся в других местах приложения.

Раньше делал похожее на React + Baobab. Суть та же: ветка в Baobab хранит «словарь» для всех загруженных, и некий объект занимается очередью/пачкованием задач.

Кажется, для такой ситуации должен быть какой-то более красивый и четкий паттерн – подскажите?
  • Вопрос задан
  • 507 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы