Итак, у меня есть сетка с сортируемыми столбцами. При каждой сортировке происходит такое действие, как UpdataGridSorting, которое отправляет серверный запрос POST с новыми данными.Очередь реквизитов для обновления данных на стороне клиента или сервера?
На сервере существует метод, который обновляет данные в базе данных. Он делает это довольно плохо: никаких блокировок для предотвращения одновременных обновлений данных в db, только блокировка для чтения при обновлении.
Поэтому у меня есть проблема: когда пользователь несколько раз нажимает на сортировку, отправляется несколько запросов, они могут перезаписывать данные одновременно и создавать грязные данные.
Таким образом, мое обходное решение заключается в очереди запросов на некоторой стороне и не обновлять базу данных до того, как предыдущее обновление будет завершено. С какой стороны лучше создать очередь?
Сейчас мое намерение:
saveGridColumnSorting = (dataToSend, action, forceSend) ->
if not forceSend
queue.enqueue(dataToSend.id);
if queue.lenght > 1 and not forceSend
return
$.ajax(
url: url + "/" + action,
data: dataToSend,
success: (data) ->
if (queue.lenght > 0)
saveGridColumnSorting(queue.dequeue());
)
return
Кроме того, если вы можете увидеть проблему XY, пожалуйста, обратитесь к шаблону или любому источнику, доверительному поможет исправить X в своем ответе.
Что это за сортировка? Из общего ресурса, как глобальная телефонная книга? Или просто для динамического отображения для пользователя? –
@YamMarcovic, Какую разницу дает мой ответ? Это данные для каждого пользователя в общей сетке. Вы хотите узнать количество переданных данных или время, которое будет потрачено на обновление в базе данных? – cassandrad