关于app.listen()callback

我是新的JavaScript,现在我正在学习express.js,但我得到了一些代码,让我感到困惑,他们是如何工作的。 我试图弄清楚这个代码是如何工作的,但我仍然不明白:

var server = app.listen(3000, function (){ var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); 

我的问题是,当服务器variables从app.listen()返回值时,这个匿名函数如何使用服务器variables。

匿名函数实际上是在应用程序初始化之后调用的callback函数。 检查这个文档( app.listen()server.listen()是一样的) :

这个function是asynchronous的。 最后一个参数callback将被添加为“侦听”事件的侦听器。

所以方法app.listen()将一个对象返回给var server但是它并没有调用callback函数。 这就是servervariables在callback中可用的原因,它是在调用callback函数之前创build的。

为了使事情更清楚,试试这个testing:

 console.log("Calling app.listen()."); var server = app.listen(3000, function (){ console.log("Calling app.listen's callback function."); var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); console.log("app.listen() executed."); 

您应该在节点的控制台中看到这些日志:

调用app.listen()。

app.listen()执行。

调用app.listen的callback函数。

示例应用程序在…