当用户连接到网站时,我有一个内部有1000个对象的数组我想逐个发送给他这个数据。但不幸的是,这段代码不起作用。
{{1}}
当我打开浏览器时,我需要等待1.5秒,然后我才会收到所有数据。您是否知道如何逐个接收这些数据,以便实时。谢谢
答案 0 :(得分:0)
我找到了如何实现这一目标的方法。我认为,因为我在库存浏览器上同时发送了这么多数据无法刷新,1秒后(添加所有数据)浏览器刷新并显示所有数据。我不确定我的理解是否正确。但这里是我添加的代码,以使其有效。
io.on('connection', (socket) =>{
console.log('made socket connection');
var senddata = function(i){
if(i<data.length){
socket.emit('initial', data[i], function(confirmation){
i++
senddata(i);
});
}
}
senddata(0);
}
所以你怎么看我在等待回调,所以现在我看到数据一个接一个出现。但由于回调所以请求客户端 - 服务器和服务器 - 客户端,它需要花费更多的时间来加载浏览器中的所有数据。这就是我改变向浏览器发送部分数据的方法,并且不为每个数组数据进行少量回调。我编写了一个简单的函数来分割几个较小的数组,所以现在我们在浏览器和服务器之间拆分工作。
io.on('connection', (socket) =>{
console.log('made socket connection');
function sendinit(start, jump){
var last = start+jump;
if(last<data.length){
socket.emit('initial', data.slice(start,last), function(confirmation){
sendinit(last,jump);
});
}
else if(last>=data.length){
socket.emit('initial', data.slice(start,data.length), function(confirmation){
console.log('data have been sent');
});
}
}
sendinit(0,200);
}
我在等你的评论,你怎么看待这种方法?