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

在我的主脚本中调用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脚本正在运行。

+0

目前还不清楚在哪儿买困在这里,因为答案很简单,你叫'stopInterval()'从任何代码在运行。你有这样的具体问题吗?如果这是在一个单独的node.js模块中,那么你必须导出'stopInterval()'函数,以便它可以被导入另一个模块并在那里使用。 – jfriend00

+0

但是,如果不知道“进度”实际上在做什么,没有人能真正回答这个问题,但是,我可以告诉你它是否正在执行CPU绑定代码,那么答案就是你不能。 – James

+0

你是从正在运行的文件外面什么意思? JavaScript有一个全球空间。如果您像这样定义stopInterval,则可以从其他位置调用...请详细说明@ jfriend00。 – Ralph

您可以拨打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);