我将如何使用setTimeout每X次运行某些内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我将如何使用setTimeout每X次运行某些内容?相关的知识,希望对你有一定的参考价值。

我有一个Massrole命令的代码,可以赋予服务器上的每个人(机器人除外)特定的角色:

message.guild.members.filter(m => !m.user.bot).forEach(member => {
   member.addRole(roleNameFind);
   console.log(`[LOG] Gave the role ${roleName} to ${member.user.tag}.`);
});

都定义了“ roleNameFind”和“ roleName”。但是我如何使用setTimeout在forEach中每5秒运行一次member.addRole(roleNameFind);console.log(`[LOG] Gave the role ${roleName} to ${member.user.tag}.`);

答案

您需要使用setInterval()而不是setTimeout()来执行重复功能。

[我也建议使用client.setTimeout()client.setInterval()而不是setTimeout()setInterval(),以便一旦漫游器停止/重新启动,就可以清除计时器。

client.setInterval(() => {
  message.guild.members.filter(m => !m.user.bot).forEach(member => {
     member.addRole(roleNameFind);
     console.log(`[LOG] Gave the role ${roleName} to ${member.user.tag}.`);
  });
}, 5000)
另一答案

使用setInterval,它完全可以满足您的要求。

var intervalId = setInterval(function() {
    console.log("This function will be executed each 5 seconds!");
}, 5000);

Mozilla MDN的更多信息。

要停止最后一项的间隔,请使用clearInterval(intervalId);

另一答案

您可以使用setInterval代替setTimeout。您可以阅读文档here

以上是关于我将如何使用setTimeout每X次运行某些内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何每 X 秒运行一次方法

Xamarin Forms:即使应用程序在后台,如何每 x 秒运行一次服务?

JS异步编程 javascript

如何每 X 分钟运行一次 cronjob?

使用setTimeout()实现倒计时效果代码实例

使用setTimeout跳转到(Typescript).forEach循环中的下一次迭代