是否可以使用我自己的函數編寫用於包裝任何node.js i/o-callback的代碼? (當我說I/O回調函數我的意思是在一些I/O動作後被調用的函數)自動包裝任何node.js回調
爲什麼我需要這樣的東西?例如:我有一個socket.io服務器 我有一堆全局函數,我實際上是作爲一個輸入(我不能改變它,甚至沒有讀它,我只是將它粘貼在我的代碼中)
socket.io.connect(socket,... callback)的回調函數與這些全局函數進行交互。現在在新連接時,我們在全局級別設置對當前套接字的訪問權限。 編寫這些全局函數的程序員都知道currentSocket變量並使用它..
問題是,在調用一些異步I/O函數後,其他用戶/套接字可能會連接並更改currentSocket,稍後異步I/O功能將得到執行currentSocket將等於不同的用戶/套接字,而不是原來的用戶/套接字,調用異步功能
我想也許我可以以某種方式自動換行I/O回調和關閉currentSocket變量,但我不知道該怎麼做... 任何想法?
var currentSocket = undefined;
io.sockets.on('connection', function (socket) {
currentSocket = socket;
socket.on('msg', function (data) {
global[data.functionToInvoke];
});
});
//global function that I can't change or even analyze/read
//========================================================
function g1(){
//might use currentSocket
//might invoke async stuff like
fs.readfile(...cb)
}
function g2(){
//might use currentSocket
//might invoke async stuff like
redisClient.get(...cb)
}
IM困惑,當你確定你要定義自己的函數回調...你所說的「包裹」是什麼意思? – hvgotcodes
@hvgotcodes他可能意味着動態相交,而不是在所有事情上都這樣做。 @MrOhad不,但可以交叉_all_函數。 – Raynos
好吧,讓我們假設別人寫回調... – DuduAlul