关于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函数。 这就是server
variables在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函数。
示例应用程序在…