首页 > 解决方案 > 异步倒计时

问题描述

使用 Node.js 16.9.0

大家好!

所以在我的discord服务器里我有几个朋友喜欢“打盹”,但需要在他们睡着几个小时后被版主断开。我想向我的不和谐机器人添加一个命令,其功能类似于“.sleepcall 3h”,然后在 3 小时内它们将与他们所在的 VC 断开连接。我目前的想法是在我的 sql 数据库中创建一个条目断开时间(当前时间 + 所需等待时间),然后每分钟运行一次循环以查看是否有人需要断开连接。有人向我提到,有一种方法可以用循环代替 JS,我需要一些指导才能开始。我想我可以做所有的支持代码,但我对如何制作计时器有点迷茫。我精通 C++,但以前从未涉足异步语言。

我将如何创建一个函数,在调用后等待 1 小时(例如),然后调用另一个函数,同时也是异步的,允许多个计时器同时运行?

我的须藤代码:

//userID = 8 digit integer
//timeout = time until disconnect in seconds

function disconnect (userID, timeout){
   while (timeout >0){
     timeout-1 second
     wait 1 second
   }
   if (timeout == 0){
     disconnect(userID)
   }
}

我需要倒计时功能的多个实例才能同时运行以允许多个用户使用该机器人

标签: javascriptnode.jstimer

解决方案


我建议您在 javascript 中使用 setTimeout() 和 clearTimeout() 函数。在此处阅读有关它们的更多信息。

您将作为回调函数提供您的断开功能。On call javascript 将启动计时器,并在提供的等待时间回调函数将被执行。倒计时将在幕后发生(异步),而其他所有功能都将正常工作。


推荐阅读