首页 > 解决方案 > setTimeout 函数会影响 Node.js 应用程序的性能吗?

问题描述

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

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

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

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

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

标签: javascriptnode.jsapi

解决方案


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

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

与此同时,你仍然可以处理东西。

...或内存泄漏?

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

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

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


推荐阅读