setTimeout 函数是否会影响 Node.js 应用程序的性能?

Sus*_*t K 2 javascript api node.js

我有一个订票请求处理程序:

route.post('/makeBooking', (req, res) => {
  // Booking code

  setTimeout(function () {
    // Checks if the payment is made, if not then cancels the booking
  }, 900000);
});
Run Code Online (Sandbox Code Playgroud)

现在我有一条预订路线,如果未在 15 分钟内付款,超时功能将取消预订。

此功能会导致任何与性能相关的问题或内存泄漏吗?

Nik*_*des 5

此功能是否会导致任何与性能相关的问题...

不,它不会,至少它本身不会。在setTimeout等待调用它的回调时,它是非阻塞的。呼叫被简单地添加到队列中。在将来的某个时刻,回调会触发,并且该调用将从该队列中删除。

同时,您仍然可以处理内容。

……还是内存泄漏?

setTimeout回调是一个闭包内。一旦setTimeout调用回调,它就有资格进行垃圾收集。

除非您在 900000 毫秒的时间范围内获得数百万次预订,否则您无需担心;当然,数量取决于您分配给 Node.js 应用程序的内存大小。

当然,如果您每秒收到那么多请求,那么您还有其他更重要的事情需要担心。