【发布时间】:2017-03-05 21:01:11
【问题描述】:
由于我是JS编程的新手,请多多包涵。
我有以下问题:
我的一个模块包含一个 setInterval 循环。
当单击 HTML 按钮(打开,代码中的变量状态)时,我的 server.js 调用此模块。我想从server.js 中断它的执行(关闭),但它不起作用..
我知道这感觉像是一个重复的问题,但我已经在 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 文件中引用我的 methods.a 中的函数
我试过了:
actions.a.stop()
但它根本不起作用..
甚至可能吗?有没有办法在我的server.js 中执行clearInterval?
感谢您的帮助
【问题讨论】:
-
请向我们解释您的代码在哪里运行以及为什么文件是分开的。这两个文件是嵌入在同一个 HTML 文档中还是
server.js在 NodeJS 服务器上远程运行? -
两者都嵌入在同一个 HTML 中!我正在研究 beaglebone 并利用 socket.io 创建一个服务器来执行代码..
标签: javascript setinterval clearinterval external-js