我有以下一段代碼應該實現TCP服務器的三個端口配置的三個回調函數。控制檯輸出應該報告它設置的三個通道中的哪一個,但是這不可能是因爲變量「i」的擴展在回調的運行時間完成,並因此得到i的最後一個值,即爲2.
我的問題:當回調被定義時,如何讓節點擴展我的變量「i」?
感謝您提前幫忙。回調變量的擴展node.js
var p_arr = [
{src_port: 5500, src_host: "localhost", dst_port: 5501, dst_host: "localhost"},
{src_port: 5502, src_host: "localhost", dst_port: 5503, dst_host: "localhost"},
{src_port: 5504, src_host: "localhost", dst_port: 5505, dst_host: "localhost"},
];
for (var i in p_arr) {
try {
rcv_soc[i] = net.createServer(function (stream) {
if (verbose & 1) console.log("Listening on host %s, port %s...", p_arr[i].src_host, p_arr[i].src_port);
stream.on("data", function (data) {
if (verbose & 4) console.log("Received from app %d: %s", i, data);
});
});
rcv_soc[i].listen(p_arr[i].src_port, p_arr[i].src_host);
}
catch (err) {
console.log("No connection possible !!");
}
}