异步函数停止同步函数
Asynchronous Function Halting Synchronous Function
所以我有一个同步函数 (client.functionOne
),它正在创建一个 Discord.js 消息收集器,它会删除发送到频道的消息。此函数还调用一个创建 setTimeout
循环的异步函数。
问题是,出于某种原因,只要 client.functionTwo
中的代码是 运行,"collect" 函数就会被阻止,并且它 运行 的速度不如如果不是 运行ning 就好了。
我不确定为什么要这样做。有人可以帮忙吗?提前致谢。
client.functionTwo = async (channel) => {
let timeout;
const interval = async () => {
// Logic here with several awaits
// Schedule a new timeout
timeout = setTimeout(interval, 2000);
}
interval();
}
client.functionOne = (channel) => {
setTimeout(() => {
const collector = channel.createMessageCollector(() => true, { time: 150000 });
client.functionTwo(channel);
collector.on("collect", (message) => {
if (message.author.bot) return;
message.delete();
});
}, 1000);
}
// client.functionTwo = async (channel) => {
// let timeout = await setTimeout(interval, 2000);
// }
client.functionOne = async (channel) => {
const collector = await channel.createMessageCollector(() => => true,
{ time: 150000 });
// await client.functionOne(channel);
collector.on("collect", async (message) => {
if (message.author.bot) return;
await message.delete();
});
}
经过大量测试后,我能够确定我的问题是由 Discord 和我正在使用的 JavaScript 库的速率限制引起的。
所以我有一个同步函数 (client.functionOne
),它正在创建一个 Discord.js 消息收集器,它会删除发送到频道的消息。此函数还调用一个创建 setTimeout
循环的异步函数。
问题是,出于某种原因,只要 client.functionTwo
中的代码是 运行,"collect" 函数就会被阻止,并且它 运行 的速度不如如果不是 运行ning 就好了。
我不确定为什么要这样做。有人可以帮忙吗?提前致谢。
client.functionTwo = async (channel) => {
let timeout;
const interval = async () => {
// Logic here with several awaits
// Schedule a new timeout
timeout = setTimeout(interval, 2000);
}
interval();
}
client.functionOne = (channel) => {
setTimeout(() => {
const collector = channel.createMessageCollector(() => true, { time: 150000 });
client.functionTwo(channel);
collector.on("collect", (message) => {
if (message.author.bot) return;
message.delete();
});
}, 1000);
}
// client.functionTwo = async (channel) => {
// let timeout = await setTimeout(interval, 2000);
// }
client.functionOne = async (channel) => {
const collector = await channel.createMessageCollector(() => => true,
{ time: 150000 });
// await client.functionOne(channel);
collector.on("collect", async (message) => {
if (message.author.bot) return;
await message.delete();
});
}
经过大量测试后,我能够确定我的问题是由 Discord 和我正在使用的 JavaScript 库的速率限制引起的。