在 .catch 语句中承诺拒绝后继续:Node.JS

问题描述

预期行为:

在 .catch 块将错误打印到控制台后,代码将继续

行为:

代码退出程序。

尝试过的方法

我尝试使用退货;声明:那什么也没做。我也尝试使用 continue;语句,出错了。我还尝试将整个内容包装在 trycatch 中,这导致了相同的行为。

代码

function readProxies() {
        const rl = readline.createInterface({
            input: fs.createReadStream(debug.proxy_file),output: process.stdout,terminal: false
        });
        rl.on('line',(line) => {
            var ipPattern = new RegExp(/(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}/g);
            var justIp = ipPattern.exec(line);
            var oneProxy = ip2proxy.getAll(justIp[0])
            if (oneProxy.Is_Proxy == 0) {
                console.log('worked')
                fetch('https://returning-json.workers-sites-examples.workers.dev/',{
                    agent: new ProxyAgent(debug.protocol + '://' + line,{
                        tunnel: true,// If true,will tunnel all HTTPS using CONNECT method
                        timeout: 2000,// Time in milli-seconds,to maximum wait for proxy connection to establish
                    })
                })
                    .then(res => res.text())
                    .then(body => console.log(body))
                    .catch(err => {
                        console.log(err)
                    })
            } else {
                console.log('not worked')
            }
        });

        rl.on('close',() => {
            console.log('closed')
        });
}

解决方法

编辑:derpirscher,谢谢!

打印在控制台上的“关闭”让我了解了正在发生的事情。事实证明,一切都很顺利,我只需要在 catch 语句中放一个 return;,然后用更多的代理填充 debug.proxy_file。其中只有一个通过了第一次检查,所以只有一个被测试是有道理的。感谢您的帮助!