如果您想在Node中启动服务器时获取地址(主机和端口)信息,您可能会这样做:
const server = http.createServer()
server.listen(() => {
console.log(`Running on port: ${server.address().port}`)
})
Doc还说只有在'listen'事件被发出之前才应该调用server.address()
但如果你试试这个:
const server = http.createServer()
server.listen()
console.log(server.address())
它仍然会记录实际地址而不是null
,为什么?
答案 0 :(得分:0)
根据server.listen()
此功能是异步的。服务器绑定后,将发出“listen”事件。
所以
const server = http.createServer()
server.listen()
console.log(server.address())
仍然记录实际地址。
答案 1 :(得分:0)
server.listen()
方法是异步的,在您调用console.log(server.address())
时可能无法完全设置所有内容(与第二个示例一样)。
您的第二个示例是在执行时记录实际地址(null
),因为它在服务器完成设置之前被调用。这就是为什么你能够提供一个回调方法作为参数
server.listen(() => {
console.log('Running on port: ${server.address().port}');
});
这允许您执行任何类型的操作,这些操作要求服务器在保证服务器启动并正在侦听之后执行侦听。