gpt4 book ai didi

javascript - 快速回调中的 SetTimeout

转载 作者:行者123 更新时间:2023-12-05 06:30:57 24 4
gpt4 key购买 nike

我正在创建一个路由,其中​​名为“active”的数据属性被设置为 true,但在一个小时后被设置为 false。我想知道在快速回调中调用 settimeout 函数是否可能或不好的做法。如;

app.get("/test", (req, res) => {

//Some code

SetTimeout(func, 3600);
});

这对缩放不利吗,如果这条路线被击中很多次,它会不会非常昂贵?提前致谢。

最佳答案

如果您将这些值存储在数据库中,那么您不应该为节点中的每个条目创建一个计时器来重置该值。特别是如果它是一个 lang 持久计时器,应该持续更长时间然后几秒的 session 之类/相关数据通常不应保留在节点进程的内存中。

您的网站被访问的频率越高,您就越有可能至少有一个计时器随时运行。一旦出现这种情况,您将无法在不丢失该计时器的情况下重新启动应用程序。或者您需要等到所有计时器都完成并且不接受任何新计时器。

并且您不能切换到集群模式,因为如果一个用户两次调用该路由,它可能会在两个不同的进程中结束,这些进程中的每一个都不知道另一个进程设置的超时。

所以一个更好的想法是在数据库中添加一个时间戳,并且一个清理计时器负责所有条目。

关于javascript - 快速回调中的 SetTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com