有一个 javascript 代码有变量messageList
保存消息列表,这可以通过updateMessageList()
如下函数更新:
var messageList=[]; //contains list of messages
function updateMessageList(id, lastUpdate); //updates messageList item for given id
//at some point while running
mesasgeList=[
{id:1, lastUpdate:1371650818000},
{id:2, lastUpdate:1371650821000},
.....
]
如果两个不同的来源updateMessageList()
同时为同一个messageList
项目调用函数会发生什么。假设消息的一个更新id:1
来自客户端(当前用户更新消息),另一个来自服务器的消息也来自于消息id:1
(另一个用户更新消息)。然后他们都将尝试同时访问和修改messageList[0].lastUpdate
属性。
In Source 1:当客户端更新消息表单提交事件时触发功能handleReply()
function handleReply(event) {
.....
var id=event.currentTarget.find('input[name="id"]').val();
//form has an hidden input for id of the message
var d = new Date();
updateMessageList(id, d.getTime());
.....
}
在源代码 2 中:JS 对服务器进行 AJAX 调用以检查是否有任何更新,然后运行updateMessages()
函数作为返回
//server sends following JSON data:{id:1, lastUpdate:1371650823269}
function updateMessages(data) {
.....
updateMessageList(data.id, data.lastUpdate);
.....
}
这些函数都updateMessageList()
将尝试更改lastUpdate
.messageList[0]
那么我们应该在编程时考虑这些情况还是javascript可以处理这些情况?