无法从数组中删除项目

时间:2015-09-28 01:03:29

标签: javascript arrays

我有一个聊天应用,可以为每个用户将数据添加到数组中。它设置为以一定间隔抓取消息,然后将消息打印到客户端窗口。一旦它完成了,它应该从数组中删除消息,因此它将被视为未定义,不再打印消息。在下面的代码中,我已经尝试了各种方法来使这个工作没有运气。我曾尝试使用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();
});

1 个答案:

答案 0 :(得分:0)

我在后端使用了错误的变量。应该是消息,我用过消息。问题已解决。