簡體   English   中英

異步功能停止同步功能

[英]Asynchronous Function Halting Synchronous Function

因此,我有一個同步函數( client.functionOne ),它正在創建Discord.js消息收集器,該收集器將刪除發送到通道的消息。 該函數還調用一個異步函數,該函數創建一個setTimeout循環。

由於某種原因,問題在於,每當client.functionTwo的代碼運行時,“ collect”功能就會被阻止,並且其運行速度不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);
}
   //  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庫的速率限制引起的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM