我需要两个函数来每隔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);
}
答案 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秒调用一次你的函数。