javascript setInterval不会每隔30秒调用一次

时间:2015-01-03 15:03:25

标签: javascript

我需要两个函数来每隔30秒调用一个函数。但是当使用setInterval时,它会每秒调用一次。我该如何解决这个问题?

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);
}

image

2 个答案:

答案 0 :(得分:0)

尝试使用您的函数名称而不是call_function

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

答案 1 :(得分:-1)

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

您必须小心JavaScript中的setTimeout和setInterval函数。例如,setInterval函数不会每隔X秒调用一次函数。它的作用是每隔X秒,它会将你的函数放在事件队列中。只有当特定功能在队列中转动时才会执行。我知道这不一定是你问题的答案,但我相信你的问题有点缺陷,因为你无法保证使用setInterval每30秒调用一次你的函数。