Описание: Я пытаюсь решить проблему с оптимизацией c блокировкой или параллельным редактированием через связь между внутренним и внешним интерфейсом.
Текущая реализация: Когда клиент делает запрос, он включает в себя указанный c заголовок закодированной метки времени, который представляет версию данных, которые пользователь пытается редактировать. Когда он получает ответ, ответ содержит заголовок новой закодированной временной метки, которую внешний интерфейс затем сохраняет для следующего запроса.
Текущая проблема: Это прекрасно работает, когда время между http.patch()
вызовов достаточно долго, чтобы получить ответ до того, как будет запущен следующий запрос. Тем не менее, если пользователь изменяет данные слишком быстро, запросы не будут выполнены, поскольку у них нет самых актуальных данных (например, временные метки не совпадают).
Сведения о проекте: Я использую Angular 7.0+, @angular-redux/store
и redux-observable
для управления побочными эффектами каждого http
запроса вызова. Хорошо обрабатывать несколько запросов в одном и том же epic
, потому что вы можете использовать concat
, чтобы сделать их синхронными. Но как вы могли бы сделать это с асинхронным вызовом нескольких эпопей?
Еще одна альтернатива, о которой я подумал, - это использовать какой-то http-interceptor
, который создает очередь запросов. Каждый раз, когда запрос запускается, он помещается в очередь. Когда ответ получен, запрос вынимается из очереди. Я просто не знаю, если queue.length > 1
, может ли он как-то дождаться ответа, прежде чем запустить последовательность запросов из очереди?
Кто-нибудь сталкивался с этой проблемой раньше? Или есть идеи как это решить?