如何从预定函数导出变量
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;
}
我有一个功能,它不断地获取输入,但随后仅通过 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;
}