【问题标题】:About app.listen() callback关于 app.listen() 回调
【发布时间】:2016-01-18 06:03:05
【问题描述】:

我是 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);
});

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

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    匿名函数其实是一个回调,在应用初始化之后调用。检查this doc(app.listen() is the same as server.listen())

    这个函数是异步的。最后一个参数回调将被添加为 'listening' 事件的监听器。

    所以app.listen() 方法将一个对象返回给var server,但它还没有调用回调。这就是为什么 server 变量在回调中可用的原因,它是在调用回调函数之前创建的。

    为了让事情更清楚,试试这个测试:

    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的回调函数。

    在...处监听的示例应用

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 2023-04-06
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 2012-02-11
      • 1970-01-01
      • 2020-09-07
      相关资源
      最近更新 更多