异步功能停止同步功能

时间:2018-10-20 07:23:06

标签: javascript asynchronous async-await discord.js

因此,我有一个同步函数(client.functionOne),该函数正在创建Discord.js消息收集器,该收集器将删除发送到通道的消息。该函数还调用异步函数,该异步函数创建一个setTimeout循环。

由于某种原因,问题是无论何时运行client.functionTwo中的代码,“ collect”功能都会被阻止,并且运行速度不如没有运行时快。

我不确定为什么要这样做。有人可以帮忙吗?预先感谢。

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);
}

2 个答案:

答案 0 :(得分:0)

   //  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();
});
}

答案 1 :(得分:0)

经过广泛的测试,我能够确定我的问题是由Discord和我使用的JavaScript库的速率限制引起的。