Я нашел способ, как этого добиться.Я думаю, что из-за того, что я отправлял столько данных одновременно в стоковом браузере, он не смог обновить, и через 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);
}
Я жду ваших комментариев, что вы думаете об этом подходе?