Как я могу получить позже и / или 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 => {
.......
.....
});
Второй код здесь работает. Мой "более поздний" код должен был находиться за пределами блока сообщений, который мешал ему. Спасибо Патрику за то, что он привел меня в правильном направлении!