javascript - 异步倒计时
问题描述
使用 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)
}
}
我需要倒计时功能的多个实例才能同时运行以允许多个用户使用该机器人
解决方案
我建议您在 javascript 中使用 setTimeout() 和 clearTimeout() 函数。在此处阅读有关它们的更多信息。
您将作为回调函数提供您的断开功能。On call javascript 将启动计时器,并在提供的等待时间回调函数将被执行。倒计时将在幕后发生(异步),而其他所有功能都将正常工作。
推荐阅读
- python - 预期的字符串或类似对象的字节错误
- dialogflow-es - Google Actions:在对话流中停止所有 mediaObjects
- java - 字符串超出索引:java.lang.ArrayIndexOutOfBoundsException。字符串可能溢出
- android - 无法将“com.android.volley.ServerError”转换为“com.android.volley.NoConnectionError”
- c++ - 串联问题
- r - 基于预测矩阵的数据帧的自动子集化
- python - 从字典中的列表中删除方括号和逗号
- php - 如何仅在 PHP 中将数据库行转换为 JSON 值字符串?
- php - 错误:stdClass 类的对象无法转换为 int
- java - 具有多个配置的 Spring Boot 测试