我有这段代码:
var action = "getPost";
clients[socket.id].on(action, function(data) {
var message = {
sender : "",
receiver : "moderation",
m : {action : action, data: data, socket: socket.id}
}
console.log(message);
console.log("Sockets executing: ", action);
//process.send(message);
});
action = "canIGetHoldedPost";
clients[socket.id].on(action, function(data) {
var message = {
sender : "",
receiver : "moderation",
m : {action : action, data: data, socket: socket.id}
}
console.log(message);
console.log("Sockets executing: ", action);
//process.send(message);
});
我的问题:当我发出其中一个函数时,它会在正文中使用最后一个操作值("canIGetHoldedPost"
)执行(m : {action : "canIGetHoldedPost"
)。如何绑定此函数以获得预期结果?
我不能只在正文中编写所需的动作,因为它将是一个包含许多事件的循环,而不仅仅是我在这里写的两个。
谢谢。
答案 0 :(得分:2)
这是你需要关闭的用途,你没有得到预期值的原因是,当调用回调时,action
的值被替换。
你可能会创建一个绑定事件的函数。这样,action
的值将被保留,直到回调被执行。
var action = "getPost";
bind(action);
action = "canIGetHoldedPost";
bind(action);
function bind(ac) {
var action = ac;
clients[socket.id].on(action, function(data) {
var message = {
sender : "",
receiver : "moderation",
m : {action : action, data: data, socket: socket.id}
}
console.log(message);
console.log("Sockets executing: ", action);
//process.send(message);
});
}