【问题标题】:What is the difference between putting code inside and outside app.listen in express?将代码放在 app.listen 内部和外部有什么区别?
【发布时间】:2021-05-19 22:40:07
【问题描述】:

我正在尝试通过setTimeout 安排函数调用。 setTimeout 调用应该在模块被实例化时运行。回调内部的代码与服务器的状态(端口、主机等)无关,例如:

fs.readFile(__dirname + "/file.json", "utf-8", (err, data) => {
  if (err) throw err
  // Some fetch operations using data
})

我应该将此代码直接放在模块的文件中还是放在app.listen 回调中?直接进入 node.js 模块的代码和进入 app.listen() 回调的代码之间有什么区别(如果有的话)?

我已经阅读了this post,但找不到答案。

【问题讨论】:

  • 如果您edit 向我们展示您的超时处理函数,我们可能会为您提供更好的帮助。
  • 如果您显示实际代码,我们可以更详细地回答。如果你展示你的实际代码,这里关于代码的问题总是可以更快、更准确、更详细地回答。事实上,我们通常可以提供您甚至不知道询问的解决方案,并指出可以对您的代码进行的其他更正或解决问题的更好方法。
  • 我添加了示例代码。

标签: node.js express


【解决方案1】:

不同之处在于时间 - 代码运行的时间。

app.listen() 回调中的内容仅在服务器启动并完成初始化后执行(例如,服务器处于活动状态)。这将始终在模块中的所有其他顶级代码已运行之后。

模块文件顶层的东西在模块初始化时运行(例如第一次加载),并且可能在服务器完全上线之前执行。

[setTimeout] 回调中的代码与服务器的状态(端口、主机等)无关。我应该将此代码直接放在模块的文件中还是 app.listen 回调中?

如果和服务器运行的时间无关,那么你可以把它放在模块的最顶层。

【讨论】:

    猜你喜欢
    • 2020-06-17
    • 2022-08-12
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多