异步倒数计时器
Asyncronous countdown timer
使用 Node.js 16.9.0
大家好!
所以在我的 discord 服务器中,我有几个朋友喜欢“睡眠呼叫”,但需要在他们睡着几个小时后被版主断开连接。我想向我的 discord bot 添加一个命令,其功能类似于“.sleepcall 3h”,然后在 3 小时内它们将与它们所在的 VC 断开连接。我目前的想法是在我的sql db加上断开时间(当前时间+期望等待时间),然后每分钟循环一次运行,看看是否有人需要断开连接。有人向我提到,有一种方法可以用循环代替 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 中的 setTimeout() 和 clearTimeout() 函数。了解更多关于它们的信息 here。
您将作为回调函数提供您的断开连接功能。 On call javascript 将启动计时器,并在提供的等待时间后执行回调函数。倒计时将在幕后发生(异步),而其他所有功能都将正常工作。
使用 Node.js 16.9.0
大家好!
所以在我的 discord 服务器中,我有几个朋友喜欢“睡眠呼叫”,但需要在他们睡着几个小时后被版主断开连接。我想向我的 discord bot 添加一个命令,其功能类似于“.sleepcall 3h”,然后在 3 小时内它们将与它们所在的 VC 断开连接。我目前的想法是在我的sql db加上断开时间(当前时间+期望等待时间),然后每分钟循环一次运行,看看是否有人需要断开连接。有人向我提到,有一种方法可以用循环代替 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 中的 setTimeout() 和 clearTimeout() 函数。了解更多关于它们的信息 here。
您将作为回调函数提供您的断开连接功能。 On call javascript 将启动计时器,并在提供的等待时间后执行回调函数。倒计时将在幕后发生(异步),而其他所有功能都将正常工作。