Как я могу получить позже и / или cron активировать мою функцию только один раз?

Я пишу код в Javascript. Я пытался использовать разные библиотеки для планирования событий, в том числе node-cron, node-schedule и позже. Планирование событий работает просто отлично, но по какой-то причине он выполняет мою функцию несколько раз, а не один раз. Иногда это делает это дважды, иногда 4 раза. Иногда он делает это более 10 раз, прежде чем двигаться дальше. Должно быть, я как-то неправильно это использую, но не вижу, что происходит не так.

Для контекста этот фрагмент кода существует в боте discord.js. Вот код, который используется в функциях планирования с использованием более поздней библиотеки. В настоящее время это работает, просто... это работает слишком много раз. Я хочу, чтобы он выполнял мою функцию только один раз.

var later = require("later");

var sched = later.parse.text('every 2 mins on the 30th sec');

function logTest() {
    console.log(`Please only do this once.`);
}

var timer = later.setTimeout(logTest, sched)

1 ответ

Мой код бота выглядел так:

var Discord = require("discord.js");
var bot = new Discord.Client({ autoReconnect: true });
var later = require("later");

bot.on("message", msg => {

.......

var sched = later.parse.text('every 2 mins on the 30th sec');

function logTest() {
    console.log(`Please only do this once.`);
}

var timer = later.setTimeout(logTest, sched)

.....
});

Теперь это выглядит так:

var Discord = require("discord.js");
var bot = new Discord.Client({ autoReconnect: true });
var later = require("later");

var sched = later.parse.text('every 2 mins on the 30th sec');

function logTest() {
    console.log(`Please only do this once.`);
}

var timer = later.setTimeout(logTest, sched)

.....

bot.on("message", msg => {

.......


.....
});

Второй код здесь работает. Мой "более поздний" код должен был находиться за пределами блока сообщений, который мешал ему. Спасибо Патрику за то, что он привел меня в правильном направлении!

Другие вопросы по тегам