var express = require('express')
var app = express();
app.use(express.static('static'));
var server = app.listen(3000, function() {
var port = server.address().port;
console.log("Started server at port", port);
});
我是JavaScript的初学者。在这段代码中,我们从未调用过server();明确但它正在执行。它也不是立即调用函数表达式。 app.listen()在什么时候真正执行了?
代码来自:https://github.com/vasansr/react-tutorial-mern/blob/master/webapp.js
答案 0 :(得分:3)
app.listen在到达那一行时执行。
var server = app.listen(3000, function() { ...
现在服务器侦听端口3000上的传入连接。
listen函数的第二个参数是一个回调函数,只要有人连接到端口3000(这是函数的第一个参数)就会调用它。
答案 1 :(得分:2)
app.listen()方法返回一个http.Server对象,(对于HTTP)是以下方便的方法:
app.listen = function() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
答案 2 :(得分:0)
server
不是函数。它是一个变量。
函数app.listen(...)
就在第7行执行。它的结果被赋值给变量server
。
app.listen()
函数有一个回调方法(第二个参数)。当应用程序开始收听时执行它。可以这么说。
当这个回调被称为server.address()。port将返回服务器的端口。
答案 3 :(得分:-1)
服务器似乎无法在任何地方调用。另外,我认为服务器不是一个函数,而是一个对象(从app.listen函数返回)。