我有一个函数,它在io.on()函数中给我一个套接字对象。但是当我尝试在socket.on函数内为其对象赋予一个新属性时,我无法使用socket.on函数之外的属性。 控制台告诉我这个 -
roomName
#undefined
我想知道如何使用对象外的属性。
io.on("connection", function(socket) {
socket.on("join_group", function(user, roomnum) {
socket.userName = user;
socket.selfRoom = roomnum;
socket.join(roomnum);
console.log(socket.selfRoom);
});
socket.on("msg", function() {
console.log("#" + socket.selfRoom);
});
});
答案 0 :(得分:1)
我想知道如何在对象外使用该属性。
您正在将回调函数中的属性设置为外部对象socket
到on
事件。
但是在调用事件处理程序on
时,外部console.log("#" + socket.selfRoom);
语句已经执行。
请注意
定义事件处理程序socket.on("join_group", function(user, roomnum) {
与调用此事件处理程序(回调方法)不一样。
JavaScript是单线程的,可用于事件循环模型,因此当事件被触发时,此事件处理程序已转到事件循环队列这将在当前任务+任务已在队列之后执行。