-1

我正在用 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)
4

1 回答 1

0

我的机器人代码曾经看起来像这样:

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 => {

.......


.....
});

这里的第二个代码有效。我的“稍后”代码需要在干扰它的消息块之外。感谢帕特里克带领我朝着正确的方向前进!

于 2017-08-22T16:46:48.450 回答