gpt4 book ai didi

javascript - Node.js——请帮我递归

转载 作者:行者123 更新时间:2023-11-30 08:51:48 25 4
gpt4 key购买 nike

我有以下 Node.js 代码:

var exec=require('child_process').exec;

var base_ctrl_port=8118;
var base_data_port=9050;
var nConns=10;

watchdogCycle();
setInterval(watchdogCycle, 60000); //check health every 60 seconds...

function watchdogCycle(){
console.log("\n");
for(var i=0;i<nConns;i++){
var data_port=base_data_port+i;
data_port=data_port+"";
var curl=exec('curl -b -s --socks5 localhost:'+data_port+' http://ifconfig.me',{timeout:10000},
function(err,stdout,stderr){
console.log(stdout);
if(err!=null){
getNewIP(i); //PROBLEM: i is always 10!!!
}
});
}
}

function getNewIP(offset){
console.log("Getting new IP address for tor data port: "+(base_data_port+offset+0)+"...");
var ctrl_port=base_ctrl_port+offset;
var nc=exec('(echo AUTHENTICATE \'\"xxxxxx\"\'; echo SIGNAL NEWNYM; echo quit) | nc localhost '+ctrl_port,
function(err,stdout,stderr){
console.log(stdout);
});
}

问题在于 getNewIP(i) 中的参数 i 始终为 10!

我已经阅读了一些关于递归的内容,但我不知道如何修改这段代码,使 i 为 0..9 而不是总是 10。

非常感谢,

最佳答案

这是闭包的问题...

试试这个:

for(var i=0;i<nConns;i++){
var data_port=base_data_port+i;
data_port=data_port+"";
(function (i){ // <-----
var curl=exec('curl -b -s --socks5 localhost:'+data_port+' http://ifconfig.me',{timeout:10000},
function(err,stdout,stderr){
console.log(stdout);
if(err!=null){
getNewIP(i); //PROBLEM: i is always 10!!!
}
});
})(i); // <-----
}

关于javascript - Node.js——请帮我递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17213701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com