我正在托管一个聊天应用程序。服务器端,我将消息存储在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);
}
}
});
}
在我的代码示例中,我试图完成此操作,但失败了。我也尝试过将索引设置为9,以使其不断添加。无论如何,一旦聊天记录达到10条消息,它就不会再输出新消息,或者会无休止地向聊天室发送垃圾邮件。除了显而易见的解决方案:消息已正确保存在服务器端,这不是问题所在。
答案 0 :(得分:1)
如果您想保留using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Timer : MonoBehaviour
{
public Collide _collide;
Text instruction;
void Start()
{
instruction = GetComponent<Text>();
InvokeRepeating("time", 0, 1);
}
if (SceneManager.GetActiveScene().buildIndex == 7)
{
int timeLeft = 120;
}
else
{
int timeLeft = 90;
}
void time()
{
if (_collide.obji <= 0 && timeLeft > 0)
{
if (SceneManager.GetActiveScene().buildIndex == 1)
{
SceneManager.LoadScene(2);
}
else if(SceneManager.GetActiveScene().buildIndex == 4)
{
SceneManager.LoadScene(5);
}
else if (SceneManager.GetActiveScene().buildIndex == 7)
{
SceneManager.LoadScene(9);
}
}
else if (_collide.obji > 0 && timeLeft <= 0)
{
if (SceneManager.GetActiveScene().buildIndex == 1)
{
SceneManager.LoadScene(3);
}
else if (SceneManager.GetActiveScene().buildIndex == 4) {
SceneManager.LoadScene(6);
}
else if (SceneManager.GetActiveScene().buildIndex == 7)
{
SceneManager.LoadScene(8);
}
}
if (timeLeft > 0)
{
timeLeft -= 1;
instruction.text = (timeLeft).ToString();
}
else if (timeLeft <= 0) {
instruction.text = "0";
}
// Update is called once per frame
}
}
数组的最后10个元素,可以这样做
messages
尽管在后端这样做比较明智。