请原谅我,因为我是JS编程的新手。
我有以下问题:
我的一个模块包含一个setInterval循环。当单击server.js按钮(打开,代码中的变量状态)时,此模块将由我的HTML调用。我想从server.js中断它的执行(关闭),但是它不能工作。
我知道这感觉像是一个重复的问题,但我已经搜索了很多在堆栈溢出中的信息,所有的问题都是指在同一个文件中执行和停止的代码。在我的例子中,我在外部文件(包含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;但我不知道如何引用我的方法中的函数.a在server.js文件中
我试过:
actions.a.stop() 但根本不管用..。有可能吗?有办法在我的clearInterval中执行server.js吗?
感谢你的帮助
发布于 2017-03-05 21:13:52
在methods.a()中声明myVar,使其成为该函数的本地作用域。尝试在函数之外声明myVar。
https://stackoverflow.com/questions/42613944
复制相似问题