gpt4 book ai didi

javascript - For 循环中的 setTimeout 不起作用

转载 作者:行者123 更新时间:2023-12-03 03:59:56 25 4
gpt4 key购买 nike

在我的 Discord.js 机器人中,我尝试创建一个垃圾邮件命令,该命令每 3/4 秒(750 毫秒)发送一条消息。但是,它会在发送第一条消息之前等待 3/4 秒,但会停止等待其余消息;从字面上疯狂地喷出消息。我怎样才能解决这个问题? https://pastebin.com/qdTV2Hre

function doSetTimeout(){
setTimeout(function(){
message.channel.send(msg);
}, 750);
}
for (i = 0; i < times; i++) {
message.channel.startTyping();
doSetTimeout();
message.channel.stopTyping();
}

最佳答案

您需要根据循环更新延迟,换句话说,您需要将其设为 i 的倍数,因此每次迭代都在考虑其延迟的前一次迭代之后进行。

function doSetTimeout(delay){
setTimeout(function(){
message.channel.send(msg);
}, (delay+1)*750);
}
for (i = 0; i < times; i++) {
message.channel.startTyping();
doSetTimeout(i);
message.channel.stopTyping();
}

示例演示:

function doSetTimeout(delay){
setTimeout(function(){
//message.channel.send(msg);
console.log('Message '+delay);
}, (delay+1)*750);
}
for (i = 0; i < 10; i++) {
//message.channel.startTyping();
doSetTimeout(i);
//message.channel.stopTyping();
}

关于javascript - For 循环中的 setTimeout 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44769665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com