在我的主脚本中调用Node.js主脚本中的主函数
问题描述:
我启动了一个定期调用函数的定时器。如何从运行文件外部调用停止方法?在我的主脚本中调用Node.js主脚本中的主函数
var myVar = setInterval(progress, 10000);
function progress() {
// do smth
}
function stopInterval() {
clearInterval(myVar);
}
如何在脚本运行时调用stopInterval()?
我在main.js导出的功能是这样的:
module.exports.stopTimer = function() {
console.log("Stop Timer");
clearInterval(myVar);
};
和我创建了一个单独的文件(stoptimer.js)具有以下内容:
var main = require('./main.js');
main.stopTimer();
这是正确的,从而远?如果是的话,我该如何执行stoptimer.js?我的命令行被阻止,因为main.js脚本正在运行。
答
您可以拨打clearInterval()
间隔函数内,
let shouldRun = true;
function shouldStop(){
shouldRun = false;
}
function progress(){
if(!shouldRun){
clearInterval(interval);
}
}
let interval = setInterval(progress, 10000);
// call from other file or elsewhere
setTimeout(()=>{shouldStop()}, 1500);
目前还不清楚在哪儿买困在这里,因为答案很简单,你叫'stopInterval()'从任何代码在运行。你有这样的具体问题吗?如果这是在一个单独的node.js模块中,那么你必须导出'stopInterval()'函数,以便它可以被导入另一个模块并在那里使用。 – jfriend00
但是,如果不知道“进度”实际上在做什么,没有人能真正回答这个问题,但是,我可以告诉你它是否正在执行CPU绑定代码,那么答案就是你不能。 – James
你是从正在运行的文件外面什么意思? JavaScript有一个全球空间。如果您像这样定义stopInterval,则可以从其他位置调用...请详细说明@ jfriend00。 – Ralph