我的情况是我正在使用Websocket,并且只有一台Websocket服务器,并且许多方法需要从服务器获取数据并修改服务器上的内容,例如删除不活动的套接字等。
现在,我只是通过函数调用和包装器函数传递服务器实例,这变得乏味并且容易出错(所有循环依赖项,错别字等)
导入服务器实例会导致循环依赖。
将它们传递给参数会导致过多的相互依赖性。
例如:
onConnection -> attaches events
onMessage = msgHanlder(server);
...
然后在msgHandler中有多个事件要处理
onNewMsg = newMsg(server)
onDelete = delete(server)
onRequest = request(server)
这是一种非常实用的样式编程,但是太麻烦了。
答案 0 :(得分:0)
创建一个缓存模块(get,set方法),并要求该模块管理您在不同模块之间的状态。
cache.js
async function checkForDuplicateRecord(requestTo) {
let errors = "";
try{
// do not allow duplicate requests
let record = await FriendRequest.findOne({
requestTo: requestTo
});
if (record) {
errors += "{'\n'}You have already sent this person a friend request.";
console.log(record);
}
}
catch(e){
errors += "{'\n'}Server Errors.";
}
return errors
}
a.js
let _cache = {};
module.exports = {
"get":function(key){
return _cache[key];
},
"set":function(key,value){
_cache[key] = value;
}
}
b.js
const cache = require('./cache');
const b = require('./b');
cache.set('a','value set in a');
b.invoke();