【问题标题】:About nodejs server.listen()关于 nodejs server.listen()
【发布时间】:2016-05-23 23:20:30
【问题描述】:

我刚开始学习 nodejs 服务器和 websockets。 说我使用 socket.io 和 express 用 javascript 编写了这个服务器。

var app = require('express')(),
    server = require('http').Server(app),
    io = require('socket.io')(server),
    port = process.env.PORT || 8080;

两者有什么区别:

server.listen(port, function(){
    console.log("listening port " + port);
});

server.listen(port);
console.log("listening port " + port);

显然它们的工作方式相同。

那么 server.listen() 实际上是做什么的呢?

【问题讨论】:

  • 第一个例子有回调函数另一个没有
  • 那么一般来说是javascript函数的属性吗?

标签: javascript node.js express socket.io


【解决方案1】:

根据docs for server.listen

这个函数是异步的。绑定服务器后,将发出“监听”事件。

它使用回调,因为回调中的日志语句是对端口已绑定的确认。

显然它们的工作方式相同。

不正确。如果你在回调之外登录,当然,它仍然会记录端口号,但这与端口的实际边界并行发生,你不知道它是否成功。

【讨论】:

  • 那么在第二种情况下,即使它没有真正在监听它也可能会显示控制台日志?
  • @AeonZh 是的,这是真的,它也可能在服务器监听之前显示控制台日志。举一个更熟悉的 promise 领域的示例,您不会期望下面的 result 变量包含调用控制台日志时的结果。 let result; fetch('www.google.com').then(response => { result = response; }); console.log('the response is ' + response');
猜你喜欢
  • 2015-01-18
  • 2018-12-30
  • 2013-07-15
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
相关资源
最近更新 更多