在一段时间后运行函数而不停止执行线程



我一直在使用 Discord 开发一个 Discord 机器人.js我遇到了 Javascript 的一个令人沮丧的限制,我正在尝试找到解决方法。

从本质上讲,我在代码中达到了想要等待一段时间的点。

目前,我在我的代码中实现了这个

while (new Date().getTime() < targetTime)
{
//Waiting
}

问题是我的代码的其他方面在这个 while 循环运行时无法运行。 例如,每当用户在 Discord 中发送消息时,我都有一个事件侦听器,但在执行 while 循环时侦听器不起作用。

client.on('message', async message => {
//stuff happens here
}

关于如何使其工作的任何建议?

这是预期的行为,主线程是"忙"在每个厚上获取当前日期。 所以他不能做任何其他事情,因为js是单线程的。

您可以使用节点调度 npm 包,它实现了更好的算法来观察当前日期。

const date = new Date(2020, 1, 22, 12, 0, 0);
schedule.scheduleJob(date, function(){
console.log('job is running');
});