【问题标题】:Asyncronous countdown timer异步倒计时
【发布时间】:2021-11-07 05:51:31
【问题描述】:

使用 Node.js 16.9.0

大家好!

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

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

我的 sudocode:

//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)
   }
}

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

【问题讨论】:

    标签: javascript node.js timer


    【解决方案1】:

    我建议您在 javascript 中使用 setTimeout() 和 clearTimeout() 函数。阅读更多关于他们的信息here

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

    【讨论】:

    • 这正是我想要的!非常感谢!我会尽快标记为答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多