【发布时间】:2017-08-21 09:55:31
【问题描述】:
我是新手,正在寻找如何通过引用在文件(模块)之间共享变量的解决方案。例如,我的这里是 app.js
const users = {},
waitingQueue = []
module.exports = function(io){
io.on('connection', (socket)=>{
users[socket.id] = socket
socket.on("Search", (d, ack)=>{
waitingQueue.push(socket)
// logic with waitingQueue
// logic with users {}
})
socket.on("otherEvent", (d, ack)=>{
// logic with waitingQueue
// logic with users {}
})
})
}
现在我想按模块划分它。现在是新的 app.js
const users = {},
waitingQueue = []
const Search = require('./search')
module.exports = function(io){
io.on('connection', (socket)=>{
users[socket.id] = socket
socket.on("Search", Search(users, waitingQueue))
})
}
现在在不同的情况下我的麻烦
socket.on("搜索", ...)
...应该是一个函数
现在如果使用encloser
socket.on("搜索", ()=>...)
export modified{users, waitingQueue} 表单 Search.js 可以,但需要覆盖用户和 waitingQueue 变量但不起作用。 我也需要通过紧密耦合将这些变量共享给其他模块。
我也尝试了基于事件发射器的方法 Object.observe() 但无法解决问题。 任何人都可以帮我解决这个问题
【问题讨论】:
标签: javascript node.js sockets module scope