【发布时间】:2020-05-23 16:53:37
【问题描述】:
我有一个使用 nodeJS 运行的 java 脚本文件。我正在使用setTimeout() 方法创建一种计时器,它将在用户指定的时间后运行一些代码。由于多个用户将使用此代码,并行运行 1000 个 setTimeout 方法会有问题吗?是否有可以同时运行的最大数量,还是只会让程序运行得越慢?
【问题讨论】:
-
我不知道有任何硬性限制,我想这更多是您可用内存量的一个因素。
-
重要提示:setTimeout 调用不会“并行”运行。回调被放置在一个有序队列中(第一个超时优先),并将在触发时间发生时按顺序运行。最大的“成本”是保持调度的回调函数和所有来自回调闭包的可达对象活动所需的内存。
-
在其他 cmets 中,您要求提供更具体的编码建议。为了有能力做到这一点,我们需要查看您现有的代码并准确了解您正在尝试做什么。具体建议需要查看您正在处理的具体问题以及到目前为止您拥有的代码。您会在这里发现,如果您向我们展示您的实际代码,您几乎总能得到更准确和更具体的答案。或者更简洁地说,“这里关于代码的问题应该包括那个代码”。
-
仅供参考,计时器是 node.js 中非常有效的资源。您可以轻松拥有数百万美元。它们保存在一个有序的桶列表中,其中所有设置为同时触发的计时器都在同一个桶中。 node.js 在事件循环中所做的所有事情都是查看列表开头的计时器时间是否已到。如果是这样,它会触发它并检查列表中的下一个。如果没有,那就什么都不做。创建一个新计时器只需要进行搜索以找出将其插入链接列表的位置。因此,成本最高的操作是在列表中插入一个新计时器。
标签: javascript node.js settimeout