从外面调用函数

我正在使用这个代码来创build一个侦听特定端口和IP的服务器

function notifier() { var net = require('net'); var host = 'xxxx'; var port = xxxx; var server = net.createServer(function (socket) { socket.on('data', function (data) { console.log("data " + data.toString()); }); socket.on('close', function (data) { console.log('closed'); }); socket.on('error', function (err) { console.log(err); }); }); function startServer() { server.listen(port, host, function () { console.log('started'); }); } function stopServer() { server.close(function () { console.log('stopped'); }); } startServer(); } 

我也创build了一个startServer和stopServer函数。

如果我调用函数notifier()然后服务器启动,但我不知道如何调用函数notifier()外的stopServer函数

也许我在这里犯了一个很大的错误,我不能在别处叫它,那么也许有人可以指出我应该如何正确的方向。

你可以使用'notifier()'函数作为工厂方法,并返回一个接口对象与服务器实例进行通信,像这样…

 function notifier() { var net = require('net'); var host = 'xxxx'; var port = xxxx; var server = net.createServer(function (socket) { // ... omitted for brevity }); return { startServer() { server.listen(port, host, function () { console.log('started'); }); }, stopServer() { server.close(function () { console.log('stopped'); }); } } } let server = notifier(); server.startServer(); server.stopServer(); 

JavaScript函数中的Sincé是第一类,您可以返回stopServer从其他地方调用它。

 function notifier(){ function stopServer(){ .... } return stopServer; // note that we do not call the function, just return it } var x = notifier(); x(); // calls stopServer