我有一个聊天应用,可以为每个用户将数据添加到数组中。它设置为以一定间隔抓取消息,然后将消息打印到客户端窗口。一旦它完成了,它应该从数组中删除消息,因此它将被视为未定义,不再打印消息。在下面的代码中,我已经尝试了各种方法来使这个工作没有运气。我曾尝试使用userMessage.user2.pop(),但控制台日志显示弹出的唯一项目是user1的第一个实例,之后它仍构建数组。 splice()也不起作用。我不明白为什么这不起作用。我已经包含了我认为只是找到错误的必要代码:
var userMessage = [];
function getMessages() {
window.setInterval(function(userMessage) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://localhost:1337/update/', true)
xhr.send();
xhr.onload = function() {
var json = '{"messages":' + xhr.responseText + '}';
newMessages = JSON.parse(json);
userMessage = newMessages['messages'];
if (userId == "1") {
var i = (userMessage.user2.length) -1;
var message = document.createElement('p');
var text = document.createTextNode(userMessage.user2[i]);
console.log(text.textContent);
if(text.textContent != "undefined"){
message.appendChild(text);
chatRoom.appendChild(message);
message.scrollIntoView(true);
userMessage.user2.splice(-1,1);
}
}
if (userId == "2") {
var i = (userMessage.user1.length)-1;
var message = document.createElement('p');
var text = document.createTextNode(userMessage.user1[i]);
console.log(text);
if(text.textContent != "undefined"){
message.appendChild(text);
chatRoom.appendChild(message);
message.scrollIntoView(true);
console.log(userMessage);
userMessage.user1.splice(-1,1);
}
}
};
}, 2000);
*********后端代码******
var messages = {
user1 : [],
user2 : []
};
app.get('/random/:room/:userId/:message', function(req, res) {
fs.appendFile(room.number.toString(), req.params.message, function(err) {
if (err) {
console.log('error writing messages to file');
};
fs.readFile('./' + room.number, 'utf-8', function(err, data) {
if (err) {
if (err.fileNotFound) {
return this.sendErrorMessage('can\'t find the file, you linked it incorrectly');
}
console.log('error reading message file');
};
if (req.params.userId == 1) {
messages.user1.push(data);
} else {
messages.user2.push(data);
};
console.log(messages);
res.send(data);
fs.unlink(req.params.room, function(err) {
});
});
});
});
app.get('/update', function(req, res){
res.send(messages);
message.user1.pop();
message.user2.pop();
});
答案 0 :(得分:0)
我在后端使用了错误的变量。应该是消息,我用过消息。问题已解决。