【问题标题】:Asynchronous Function Halting Synchronous Function异步函数停止同步函数
【发布时间】:2019-03-24 23:53:10
【问题描述】:

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

问题是,由于某种原因,每当client.functionTwo 中的代码运行时,“收集”功能就会被阻止,并且它的运行速度不如不运行时的速度。

我不确定它为什么这样做。有人可以帮忙吗?提前致谢。

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

【问题讨论】:

  • 我不会调用任何创建setTimeout 或调用functionTwo“同步”的函数。

标签: javascript asynchronous async-await discord.js


【解决方案1】:
   //  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 库的速率限制引起的。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2021-09-23
    相关资源
    最近更新 更多