作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
避免 Node.js 中的“回调 hell ”。
重构后套接字对象不再可用。如何将其传递给函数?
var ActiveSession = require('./session-model');
// ...
socket.on("c2s_logout", function (message) {
ActiveSession.remove({ sessionid: message.sessionid } , function(err, activeSession) {
socket.emit("s2c_logout_success");
});
});
var ActiveSession = require('./session-model');
function logout(message) {
ActiveSession.remove({ sessionid: message.sessionid } , function(err, activeSession) {
//socket.emit("s2c_logout_success"); // THE PROBLEM
// THIS IS NOT POSSIBLE ANYMORE AFTER REFACTORING
// SOCKET IS NOT AVAILABLE
});
}
module.exports.logout = logout;
var Auth = require('./auth.js');
// ...
socket.on("c2s_logout", Auth.logout );
最佳答案
您可以将套接字传递给注销函数。
auth.js
var ActiveSession = require('./session-model');
function logout(message, socket) {
ActiveSession.remove({ sessionid: message.sessionid } , function(err, activeSession) {
socket.emit("s2c_logout_success"); // NO PROBLEM
});
}
module.exports.logout = logout;
服务器.js
var Auth = require('./auth.js');
// ...
socket.on("c2s_logout", function(message){ Auth.logout(message, socket); });
关于javascript - Node.js 重构 : How to pass object-pointer (here: a socket)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39634830/
我是一名优秀的程序员,十分优秀!