【发布时间】:2020-04-20 16:53:17
【问题描述】:
我确定以前有人问过这个问题,但我似乎找不到任何有帮助的东西,我希望标题有意义,我是 javascript 和 node.js 的新手。简而言之,我正在为内部消息传递系统(如 slack)创建机器人。我的机器人是一个提醒机器人,因此用户可以输入关键字并说“在 10 分钟内提醒我‘x’”或“提醒我在 4 月 30 日上午 9:00 做‘y’”等。
在我看来,只有一个不断更新的全局时间变量是有意义的,例如:
if(currentDateTime >= reminderArray[0].notificationTime){
bot.sendMessage(reminderArray[0].message);
reminderArray.shift();
}
将所有提醒推送到按提醒时间排序的全局队列中,然后在全局时间等于队列中第一项的时间时执行机器人发送消息。
我很难弄清楚如何实时更新全局时间变量。我研究了 cron 作业,但我不确定如何同时运行多个 cron 作业。
我不知道我是不是想太多了,这就像我在键盘上敲了 3 天,所以我可能只是在一个洞里,答案可能很简单。无论如何,如果您能提供任何启示、提供任何建议或展示任何我可以使用的示例/工具,我将不胜感激。
等等,当我重新表述这个问题时,我意识到如果我将代码块放在setInterval() 中,它就可以工作。像这样的:
setInterval(() => {
const time = moment();
if(time >= reminderArray[0].notificationTime){
bot.sendMessage(reminderArray[0].message);
reminderArray.shift();
}
},6000)
【问题讨论】:
-
"不断更新的全局时间变量" - 您是指获取当前时间的系统函数(
Date.now()或new Date()在javascript中)?如果没有,请更好地表达您的问题。 -
我想你想要
currentDateTime >=,并检查过去的所有数组元素。 -
您说得对,感谢您的帮助,对于问题含糊不清以及围绕问题的细节表示歉意。
标签: javascript node.js ecmascript-6 cron momentjs