Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript setInterval不';不要每30秒打一次电话_Javascript - Fatal编程技术网

javascript setInterval不';不要每30秒打一次电话

javascript setInterval不';不要每30秒打一次电话,javascript,Javascript,我有两个函数,我需要它每30秒调用一个函数。但是当使用setIntreval时,它会每秒调用一次。我怎样才能解决这个问题 this.seconds = 30; // part of a class called "player" it holds a value in seconds var _seconds = this.seconds * 1000; // converts seconds to miliseconds this.init = function() { ws.sen

我有两个函数,我需要它每30秒调用一个函数。但是当使用setIntreval时,它会每秒调用一次。我怎样才能解决这个问题

this.seconds = 30; // part of a class called "player" it holds a value in seconds
var _seconds = this.seconds * 1000; // converts seconds to miliseconds

this.init = function() {
    ws.send('init'); // sends "init" to the server
}

ws.onopen = function() { // ws is a local variable that holds the connection.
//ws.onopen is a method of ws it is called once per page load,
//and only if the client connects successfully to the server 
    var call = this.init;
    setInterval(call, _seconds);
}

尝试使用函数名,而不是调用函数

setInterval(function(){
  call_function();
}, 30000);

查看您的代码,您如何调用
ws.onopen
?目前,当您调用函数时,我相信
this
上下文绑定到
ws
。但是,您的
ws
对象没有与其关联的
init
方法


您必须小心使用JavaScript中的setTimeout和setInterval函数。例如,setInterval函数不会每X秒调用一次函数。它所做的是,每隔X秒,它会将您的函数放入事件队列中。只有当轮到队列中的特定函数时,它才会被执行。我知道这不一定是对你问题的回答,但我相信你的问题有点瑕疵,因为你无法保证你的函数使用setInterval每隔30秒调用一次。

为什么
调用
\u seconds
之间没有逗号?你没有发布足够的代码。什么是
ws
?另外,您能否提供关于如何知道每秒调用函数的信息?…并提供一个完全工作的JSFIDLE。通常,仅这一步就足以让您自己找到错误……:)您使用的是哪种浏览器?因此,如果他添加了缺少的逗号(可能是打字错误),并且他的功能是调用
,那么您的解决方案有何不同?这似乎不是问题。鉴于提供的信息,我们似乎无法真正调试此问题,仅此而已。@Mörre问题可能与他如何生成
\u秒
值有关(他没有告诉我们这里有什么
)。在超时持续时间中输入一个硬编码的30000值将是一个很好的故障排除步骤(但不是答案)。如果秒数不可用,他将得到一个错误,而不是描述的行为。问他是否试过硬编码的
30000
值得一提,而不是回答:)哦,如果你想知道的话,那不是我的反对票。我从不投反对票。他没有说他有错误,他说每秒钟都有人打电话。使用OP提供的信息,问题不是“可调试的”。我相信@wmock是正确的。根据这段代码,init方法永远不会被调用。这个上下文与ws绑定。@Karthik现在你所要做的就是解释为什么OP说每隔一秒调用一次函数,而不是他得到一个错误。我们为什么不坚持事实呢?他们是这样的:我们什么都不能说!你不仅仅是在猜测,你甚至无视我们为你的假设所掌握的一些事实。这可能是问题所在,也可能不是。坚持OP说的事实并非如此。因为出错和被随时调用是两件截然不同的事情,所以我认为在这一点上没有理由不相信OP。我的意思是,如果他把这两个搞混了,那就真的很重要了……当我在上面写代码时,逗号是个错误。对于应用于
WebSocket
方法的
ws
,每次客户端浏览器连接到WebSocket服务器时都会调用onopen
。所以基本上每页加载只调用一次。之所以使用
this.seconds
,是因为它是一个名为player@Michael你怎么知道你的函数每秒都在被调用?你能核实一下吗?