0

我有一个函数可以不断地获取输入,但之后每分钟只用一个 cron 作业处理它。

最近的输出应该存储在一个变量中,并在随机时间从外部检索。

这里以非常简化的形式:

let input = 'something';

let data = '';
data += input;

require('node-schedule').scheduleJob('* * * * *', somethingMore);

function somethingMore() {
let output = data += 'More';
// return output;
}

console.log(output);

在这种情况下,像上面那样在函数之外初始化变量似乎不起作用。

直接调用函数或将其分配给变量没有帮助,因为它会在到期之前运行它。

我也尝试过使用缓冲区,但它们似乎也不起作用,除非我错过了什么。

唯一可行的方法是使用 fs 将文件写入磁盘然后从那里读取,但我想这不是最好的解决方案。

4

1 回答 1

1

似乎您只是让 chron 函数按计划运行,并将最新结果保存在模块范围的变量中。然后,创建其他任何人都可以调用以获取最新结果的另一个导出函数。

您只显示伪代码(不是您的真实代码),因此不清楚您要保存什么以供将来查询返回。您必须自己实现该部分。

因此,如果您只想保存最新的值:

// module-scoped variable to save recent data
// you may want to call your function to initialize it when
// the module loads, otherwise it may be undefined for a little bit
// of time
let lastData;

require('node-schedule').scheduleJob('* * * * * *', () => {
     // do something that gets someData
     lastData = someData;
});

// let outside caller get the most recent data
module.exports.getLastData = function() {
    return lastData;
}
于 2022-02-07T01:06:51.137 回答