setInterval/setTimeout 一次获取消息时遇到问题
setInterval/setTimeout problem getting messages at once
我得到了一部分代码,它应该每隔 x 秒以不一致的方式发送消息,但它等待 x 秒并一次发送所有消息
let amount = 5;
let interval = 3000
for (i = 0; i < amount; i++) {
setInterval(() => {
message.channel.send($arr[Random(0, $arr.length)]);
}, interval);
}
我在循环外尝试了这个,使用 setTimeout() 和 clearInterval() 或 clearTimeout() 它从来没有奏效
编辑:
let amount = 5;
const interval = 300; // 3000
const tId = setInterval(() => {
console.log(amount)
// message.channel.send($arr[Random(0, $arr.length)]);
if (--amount === 0) clearTimeout(tId);
}, interval);
您应该创建一个函数并在 setTimeout
(而不是 setInterval
)中调用它,并使用计数器而不是 for
循环。
您的代码中发生了什么:所有 setInterval
内部代码立即执行...
尝试这样的事情:
var counter = 0;
var amount = 5;
var interval = 3000
function msg() {
message.channel.send($arr[Random(0, $arr.length)]);
counter++;
if(counter<amount) {
setTimeout(msg, interval);
}
)
msg();
你需要给CPU喘口气
let amount = 5;
const interval = 300; // 3000
const tId = setInterval(() => {
console.log(amount)
// message.channel.send($arr[Random(0, $arr.length)]);
if (--amount === 0) clearTimeout(tId);
}, interval);
我得到了一部分代码,它应该每隔 x 秒以不一致的方式发送消息,但它等待 x 秒并一次发送所有消息
let amount = 5;
let interval = 3000
for (i = 0; i < amount; i++) {
setInterval(() => {
message.channel.send($arr[Random(0, $arr.length)]);
}, interval);
}
我在循环外尝试了这个,使用 setTimeout() 和 clearInterval() 或 clearTimeout() 它从来没有奏效
编辑:
let amount = 5;
const interval = 300; // 3000
const tId = setInterval(() => {
console.log(amount)
// message.channel.send($arr[Random(0, $arr.length)]);
if (--amount === 0) clearTimeout(tId);
}, interval);
您应该创建一个函数并在 setTimeout
(而不是 setInterval
)中调用它,并使用计数器而不是 for
循环。
您的代码中发生了什么:所有 setInterval
内部代码立即执行...
尝试这样的事情:
var counter = 0;
var amount = 5;
var interval = 3000
function msg() {
message.channel.send($arr[Random(0, $arr.length)]);
counter++;
if(counter<amount) {
setTimeout(msg, interval);
}
)
msg();
你需要给CPU喘口气
let amount = 5;
const interval = 300; // 3000
const tId = setInterval(() => {
console.log(amount)
// message.channel.send($arr[Random(0, $arr.length)]);
if (--amount === 0) clearTimeout(tId);
}, interval);