如何从预定函数导出变量

How to export a variable from a scheduled function

我有一个功能,它不断地获取输入,但随后仅通过 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 将文件写入磁盘,然后从那里读取,但我想这不是最好的解决方案。

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

您只显示了 pseudo-code(不是您的真实代码),因此不清楚您要保存什么以供将来查询 return。您必须自己实施该部分。

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

// 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;
}