【问题标题】:call function inside method from external js从外部js调用方法内部的函数
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 嗯...似乎都是关于全局/局部变量... :) 谢谢拉里,工作。在 actions.js 中声明 myvar ,并为函数 stop 创建了一个方法,如果在 server.js 上,则在 state == 0 内调用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2018-06-12
  • 2011-05-10
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多