如何使用JavaScript从JSON加载具有固定数量条目的新消息?

如何使用JavaScript从JSON加载具有固定数量条目的新消息?,javascript,php,Javascript,Php,我正在主持一个聊天应用程序。服务器端我用JSON存储消息。(例如:[{“message”:“Hey!”,“time”:1549087762},{“message”:“What's up?”,“time”:1549087763}])发送消息时,如果json.messages计数大于10,我会将最早的条目移走。总之,一次只显示10条消息 由于数字递增逻辑,在聊天室收到10条消息后,我无法显示新消息 function loadMessages() { var myRequest = new Req

我正在主持一个聊天应用程序。服务器端我用JSON存储消息。(例如:
[{“message”:“Hey!”,“time”:1549087762},{“message”:“What's up?”,“time”:1549087763}]
)发送消息时,如果json.messages计数大于10,我会将最早的条目移走。总之,一次只显示10条消息

由于数字递增逻辑,在聊天室收到10条消息后,我无法显示新消息

function loadMessages() {
  var myRequest = new Request('https://console.chat/api/read.php?domain=' + domain);
  fetch(myRequest)
    .then(function(response) {
      return response.json();
    })
    .then(function(data) {
      for (var i = 0; i < data.messages.length; i++) {
        var time = Math.round(new Date().getTime() / 1000);
        if (data.messages[i].time < time) {
          console.log(data.messages[i].message);
        }
      }
    });
}
函数加载消息(){
var myRequest=新请求('https://console.chat/api/read.php?domain=“+域);
获取(myRequest)
.然后(功能(响应){
返回response.json();
})
.then(功能(数据){
对于(var i=0;i

在我的代码示例中,我试图实现这一点,但失败了。我还尝试将索引设置为9,以便不断添加。不管怎样,一旦一个聊天达到10条消息,它将不再输出新消息,或者将无休止地用这些消息垃圾聊天。撇开显而易见的解决方案不谈:消息在服务器端正确保存,这不是问题。

如果您想保留
消息
数组的最后10个元素,可以这样做

.then(function(data) {
  data.messages = data.messages.slice(Math.max(data.messages.length - 10, 0))

  for (var i = 0; i < data.messages.length; i++) {
    var time = Math.round(new Date().getTime() / 1000);
    if (data.messages[i].time < time) {
      console.log(data.messages[i].message);
    }
  }
});
.then(函数(数据){
data.messages=data.messages.slice(Math.max(data.messages.length-10,0))
对于(var i=0;i

虽然在后端这样做会更明智。

我用一些模拟数据运行了它,它似乎运行得很好。它只打印所有消息。你想在前端做些移动的事情吗?如果你展示了你的后端代码,那么你可能会更容易理解如何只返回最后10条消息。是的,后端PHP只存储了10条消息。JavaScript出现了问题。它显示了所有预期的消息,但使用setInterval它会垃圾邮件聊天。setIntrerval
在哪里?