如何修改现有代码将setInterval间隔设为30-50秒的随机值
修改方案
你只需要调整setInterval的第二个参数即可,30~50秒对应的毫秒范围是30000 ~ 50000,用Math.random()生成随机值即可。如果需要每次执行后的间隔都重新随机,建议把setInterval替换为递归调用的setTimeout避免间隔固定。
修改后的完整代码
client.on('chat', function(channel, user, message, self) { if (user.username == 'Cortex' && message === 'sar') { test(channel); // 此处补充传递channel参数,避免test内部无法访问变量报错 } }); function test(channel) { // 方案1:仅首次生成30~50秒的固定随机间隔,后续间隔不变 setInterval(function() { var spamMessage = 'KEK '; var toSpam = 'MingLee'; for (i = 0; i < 30; i++) { spamMessage += toSpam + ' '; } client.say(channel, spamMessage) }, 30000 + Math.random() * 20000); // 生成30000~50000毫秒的随机值 // 方案2:每次发送消息后重新随机间隔,每次间隔都不一样,需要的话替换上面的setInterval部分即可 /* function sendSpam() { var spamMessage = 'KEK '; var toSpam = 'MingLee'; for (i = 0; i < 30; i++) { spamMessage += toSpam + ' '; } client.say(channel, spamMessage); // 执行完成后重新生成随机间隔,触发下一次执行 setTimeout(sendSpam, 30000 + Math.random() * 20000); } // 首次触发执行 setTimeout(sendSpam, 30000 + Math.random() * 20000); */ }
补充说明
- 原代码中
test函数内部直接使用了上层事件回调的channel变量,会出现变量未定义的报错,因此补充了参数传递逻辑 - 两种方案按需选择即可,不需要额外改动其他逻辑
内容的提问来源于stack exchange,提问作者Cortex
相关产品推荐
相关产品推荐

