2015-12-30 3 views
1

У меня есть страница, которая обращается к таблицам Google. Я хочу быть уверенным, что несколько пользователей не меняют лист одновременно, однако моя страница просто использует внешний интерфейс javascript без реального серверного компонента. Очевидным решением является использование блокировки, но без API-интерфейса сервера для обеспечения блокировки я не уверен, как это будет работать.Служба блокировки Javascript

Есть ли какие-либо услуги, которые позволили бы мне делать блокировку без необходимости создавать что-либо на сервере?

ответ

0

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

cell_A: name/id of user, or just a True/False value to specify that an edit is taking place 
cell_B: date/time of last update attempt, preferably in UTC 

if cell_A is False: 
    change cell_A to True (or update with current_user_name) 
    change cell_B to current_date_time 
    start editing the rest of the spreadsheet 
else: 
    if cell_B < (current_date_time - acceptable_threshold): //assume prior edit session timed out or another way the edit was left incomplete, so we're OK to continue 
     change cell_A to True (or update with current_user_name) 
     change cell_B to current_date_time 
     start editing the rest of the spreadsheet 
    end if 
end if 

callback edits_completed: 
    change cell_A to False 

Таким образом, вы все еще будете использовать централизованно хранящийся маркер, просто управлять с помощью Google Таблиц. Удачи!