从Node.js中的主脚本调用函数

从Node.js中的主脚本调用函数,node.js,function,command-line,timer,Node.js,Function,Command Line,Timer,在我的主脚本中,我启动了一个计时器,它定期调用函数。如何从正在运行的文件外部调用Stop方法 var myVar = setInterval(progress, 10000); function progress() { // do smth } function stopInterval() { clearInterval(myVar); } 如果脚本正在运行,如何调用stopInterval() 我将main.js中的函数导

在我的主脚本中,我启动了一个计时器,它定期调用函数。如何从正在运行的文件外部调用Stop方法

    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脚本正在运行。

您可以在interval函数内部调用
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()
函数,以便它可以导入到另一个模块中并在那里使用。但是,如果不知道
进度
实际在做什么,没有人能够真正回答这个问题,我可以告诉你,如果它执行的是CPU绑定的代码,那么答案是你不能。从运行文件之外看,你是什么意思?JavaScript有一个全局空间。如果您这样定义stopInterval,您可以从其他位置调用它。。。请按照@jfriend00所述更具体一些。@Ralph-注意,问题上的node.js标记。这可能是一个关于从node.js中的另一个模块调用某个东西的问题,但是这个问题一点也不清楚,所以这只是一个猜测。为了让您理解我的问题,有一个小解释:在我的main.js中,我开始了无限间隔。当我通过cmd运行脚本时,我必须终止节点进程以停止计时器。可以调用stop方法吗?