我怎样才能稍后和/或cron只激活我的功能一次?

时间:2017-08-22 13:57:12

标签: javascript laterjs

我正在用Javascript编写代码。我尝试使用不同的库来安排事件,包括node-cron,node-schedule和更高版本。调度事件工作正常,但由于某种原因,它执行我的函数几次而不是一次。有时它会两次,有时是4次。有时它会继续前进10次以上。我必须以某种方式错误地使用它,但我不知道出了什么问题。

对于上下文,这段代码存在于discord.js bot中。这是调度函数中涉及的代码,使用后面的库。目前,这是有效的,只是...它的工作方式太多了。我只想让它一次执行我的功能。

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 个答案:

答案 0 :(得分: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 => {

.......


.....
});

此处的第二个代码可行。我的"以后"代码需要在消息块之外,这会干扰它。感谢Patrick带领我朝着正确的方向前进!