在服务器上反复发送一个数组元素时,此函数有效。
var data = [];
var arrayLength = data.length;
data[0] = "500,400,399";
data[1] = "453,544,3333";
data[2] = "g44,tyt,rraa";
data[3] = "g45,343434,43333";
function sendWind() {
console.log('Wind sent to user');
io.emit('chat message', data[0]);
}
setInterval(sendWind, 3000);
但是当我将其更改为for循环以发送数组的所有元素时,它不会发送任何内容。
function sendWind() {
for (var i = 0; i < arrayLength; i++) {
console.log('Wind sent to user');
io.emit('chat message', data[i]);
}
}
setInterval(sendWind, 3000);
答案 0 :(得分:3)
在为数组分配元素之前检查数组长度。将行切换为:
data[0] = "500,400,399";
data[1] = "453,544,3333";
data[2] = "g44,tyt,rraa";
data[3] = "g45,343434,43333";
var arrayLength = data.length;
否则,arrayLength
将为0。
答案 1 :(得分:2)
var data = [];
var arrayLength = data.length;
data[0] = "500,400,399";
data[1] = "453,544,3333";
data[2] = "g44,tyt,rraa";
data[3] = "g45,343434,43333";
让我们了解发生了什么: - 声明数据(长度为0的数组) - 声明一个var arrayLength,它等于data.length = 0 - 您尝试访问数据[i],其中我从0开始到arrayLength = 0
所以你需要的是在data [0],data [1],data [2],data [3]之后声明arrayLength,或者在你需要它时使用data.length来声明arrayLength:
function sendWind() {
for (var i = 0; i < data.length; i++) {
console.log('Wind sent to user');
io.emit('chat message', data[i]);
}
}