在節點中,我看到模塊中全局變量初始化的變量越來越多地被請求混淆[一個請求所做的更改會影響另一個請求]。 對於防爆:模塊內的節點js全局模塊
a.js
var a;
function printName(req, res) {
//get param `name` from url;
a = name;
res.end('Hi '+a);
}
module.exports.printName = printName;
index.js
//Assume all createServer stuffs are done and following function as a CB to createServer
function requestListener(req, res) {
var a = require('a');
a.printName(req, res);
}
按我的設想,printName功能模塊從 '一' 是每次執行新的出口請求命中節點,並且每次都會有不同的作用域對象。
因此,在模塊內部擁有全局內容不會影響他們跨請求。
但我明白事實並非如此。任何人都可以解釋節點如何以特定的方式處理函數的模塊導出[它處理緩存模塊導出對象的範圍],以及如何克服模塊內跨請求的共享全局變量?
編輯[我們對每個請求執行異步任務]: 在我們的現場系統中有快速請求。基本上查詢redis並響應請求。我們看到錯誤的響應映射到錯誤的請求(響應[存儲在模塊的全局變量中],redis查找錯誤地映射到diff req)。而且我們也有一些默認值作爲可以根據請求參數重寫的全局變量。這也是搞砸了
這是發生在快速請求,還是有幾秒鐘的延遲,它仍然發生? – legacy 2013-05-08 14:08:54
隨着我們現場系統的快速請求。基本上查詢redis並響應請求。我們看到錯誤的響應映射到錯誤的請求(響應[存儲在模塊的全局變量中],redis查找錯誤地映射到diff req)。而且我們也有一些默認值作爲可以根據請求參數重寫的全局變量。這也是搞砸了 – Tamil 2013-05-08 14:26:43