从外部js调用函数内部方法

时间:2017-03-05 21:01:11

标签: javascript setinterval clearinterval external-js

因为我是JS编程的新手,请耐心等待。

我有以下问题:

我的一个模块包含一个setInterval循环。 单击HTML按钮时,我的server.js会调用此模块(ON,代码中的变量状态)。我想从server.js中断执行(OFF),但它不起作用..

我知道这感觉像是一个重复的问题,但我已经搜索了Stack Overflow中的信息,所有问题都是指在同一个文件中执行和停止的代码。在我的情况下,我在外部文件(包含setInterval)中调用一个方法,我想触发应该在该外部文件中运行的clearInterval

以下简化代码:

action.js

module.a = function(milisec) {
    var myVar = setInterval( function() { do stuff }, milisec);
}
module.exports = methods;

我的第一次尝试:

Server.js

// var state is a button on my HTML
var actions = require('./actions');
If (state == 1)
{ actions.a(milisec) }
If (state == 0)
{ clearInterval(myVar) }

但它没有用。而且我认为它也清楚了原因:代码不知道我从哪里得到myVar,基本上我认为我应该从模块内部调用一个函数来停止setInterval,因此,我在方法中包含了函数stop()

我的第二次尝试:

action.js

methods.a = fuction(milisec) {
    var myVar = setInterval( function() { 
    console.log("I'm being executed");}, milisec);
    function stop() {
      clearInterval(myVar); 
    }
}
Module.exports = methods;

但我不知道如何在server.js文件

上的方法中引用该函数。

我试过了:

actions.a.stop() 

但它根本不起作用.. 它甚至可能吗?有没有办法在clearInterval中执行server.js

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您在methods.a()中声明myVar,使其成为该函数的本地范围。尝试在函数之外声明myVar。