Обновление ячеек один за другим с перерывом в базе данных - PullRequest
0 голосов
/ 11 сентября 2010

Для некоторых целей у меня есть электронная таблица, похожая на Excel, и она почти готова и работает отлично, но есть проблема, с которой я сталкиваюсь и хочу исправить.

Вы можете увидеть таблицу там на http://partydesigners.site50.net/Excel%20Like%20App/Index.html

Проблема заключается в том, что в одно время более 1 пользователя используют эту электронную таблицу, и если один человек изменяет какую-либо ячейку, другой не обновляет ее в своей электронной таблице, поэтому я планировал использовать функцию setTimeout () для вызова функция, которая будет обновлять каждую ячейку в листе из базы данных. «

Теперь проблема в том, что в базе данных 40 строк, каждая из которых содержит 10 записей, и 400 записей необходимо обновлять каждые "n" секунд, чтобы он зависал в браузере и страдало UE. Я подумал, что могу создать таймер, например обновить одну ячейку, а затем перейти к другой через несколько секунд, а затем обновить еще одну через несколько секунд в цепочке.

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

Так какой псевдо-JQuery-код вы бы написали для него?

1 Ответ

0 голосов
/ 11 сентября 2010

Как упоминал Джонатан Кун в комментариях, было бы лучше отслеживать только те ячейки, которые необходимо изменить, и соответственно обновлять их

В зависимости от того, как вы настроили эту базу данных, будет зависетьо том, как отслеживать, что было изменено.Но моя первая мысль - иметь таблицу, которая отслеживает одно изменение в строке вместе с отметкой времени, когда это изменение произошло.Затем вы можете запускать функцию из браузера каждые 'n' секунд, которая использует некоторый ajax для запроса всех изменений с момента его последнего запроса (может отслеживать уникальный идентификатор последнего обновления, сортировать по отметке времени и получать все новое).

Это должно помочь ускорить процесс, поскольку он будет тратить только время на обновление ячеек, которые действительно нуждаются в этом.

Однако, как оговорка, все еще очень возможно, что второй пользователь обновляет ячейку перед первымредактирование показало на их экране.(Подумайте, два пользователя редактируют ячейку практически одновременно, может быть, второй инициирует миллисекунды «сохранения» после первого.) Лучший способ, которым я могу думать об этом, - это показать предупреждение второму пользователю, если оно замечено.что они очень быстро что-то редактируют после предыдущего редактирования, что они могут перезаписывать данные.

...