Асинхронная функция Остановка синхронной функции - PullRequest
0 голосов
/ 20 октября 2018

Итак, у меня есть синхронная функция (client.functionOne), которая создает сборщик сообщений Discord.js, который удаляет сообщения, отправленные на канал.Эта функция также вызывает асинхронную функцию, которая создает цикл * 1002. *.

. Проблема по какой-то причине заключается в том, что функция "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);
}

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

После обширного тестирования я смог определить, что моя проблема была вызвана ограничением скорости с Discord и библиотекой JavaScript, которую я использую.

0 голосов
/ 20 октября 2018
   //  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();
});
}
...