因为我是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
?
感谢您的帮助
答案 0 :(得分:0)
您在methods.a()中声明myVar,使其成为该函数的本地范围。尝试在函数之外声明myVar。