我使用以下代码,我的问题是我应该如何将端口从第一个函数传递到seconde,我知道如果我调用第二个函数在内部,我可以做到第一个但是还有其他方法可以使用吗?
portscanner.findAPortNotInUse(3000, 3010, '127.0.0.1', function(error, port) {
console.log('AVAILABLE PORT AT: ' + port)
});
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
JSON.stringify(req.headers, true, 2));
res.end();
}).listen(9033);
而不是使用端口9033我想使用第一个...
中的值答案 0 :(得分:1)
端口扫描程序方法是异步,因此唯一的方法是在确定可用端口时,在调用回调函数时创建服务器:
portscanner.findAPortNotInUse(3000, 3010, '127.0.0.1', function(error, port) {
console.log('AVAILABLE PORT AT: ' + port)
http.createServer(function (req, res) {
// ...
}).listen(port);
});
答案 1 :(得分:1)
您正在处理异步代码。尝试
portscanner.findAPortNotInUse(3000, 3010, '127.0.0.1', function(error, port) {
console.log('AVAILABLE PORT AT: ' + port);
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
JSON.stringify(req.headers, true, 2));
res.end();
}).listen(port);
});
如果您不想在回调中运行createServer
部分,则另一个选项是使其成为函数调用。除了改变语法
portscanner.findAPortNotInUse(3000, 3010, '127.0.0.1', function(error, port) {
console.log('AVAILABLE PORT AT: ' + port);
// call the 'CreateServer' function with the available port
CreateServer(port);
});
function CreateServer (port) {
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
JSON.stringify(req.headers, true, 2));
res.end();
}).listen(port);
}
答案 2 :(得分:1)
File Path
试试这段代码。
答案 3 :(得分:-1)
第一种方法返回什么类型?您可以简单地将其设置为String并将其结果设置为将在类中定义的私有String变量。然后你只想这样做:
<强>听(this.port); 强>
或者,您可以设置 final static String 变量端口,该端口将作为参数传递给两个方法。