我正在 socket.io
和 canvas
中为我的游戏制作一个名为 rooms.js
的模块,并且我有一个函数可以将用户数据作为对象与客户端同步,但是 setInterval
不适用于我的函数 Rooms.Listener()
,客户端仅在 使用 setInterval
获取数据 4 次 1ms,但仅一次,10ms。
代码:
Listener: function() {
setInterval(function() {
// send data to client every 1ms
Rooms.ListUsers();
}, 1);
},
ListUsers: function() {
for(var roomID in Rooms.Obj) {
var room = Rooms.Obj[roomID];
// send users data to client
room.users.forEach(function(uid) {
var socketID = users.getSocketIDbyId(uid);
var data = Rooms.getUsersInRoomData(roomID);
fiveSocket.emitClient(socketID, headers.roomUsers, data);
});
}
},
getUsersInRoomData: function(roomID) {
var room = Rooms.Obj[roomID];
var obj = {};
room.users.forEach(function(uid) {
var user = users.Obj[uid];
obj[uid] = {
username: user.username,
position: user.position,
figure: user.figure
};
});
return obj;
},
问题出在哪里?谢谢
最佳答案
分别仔细检查您的方法。代码本身应该可以工作,问题可能出在您的内部方法内部。
var Rooms = {
Listener: function() {
setInterval(function() {
Rooms.ListUsers();
}, 1000); // change to 1ms if necessary
},
ListUsers : function() {
document.body.innerHTML += Date.now() + "<br />";
}
};
Rooms.Listener();
关于javascript - NodeJS setInterval 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34885223/