2015-01-03 2 views
-1

두 함수가 있습니다. 한 함수를 30 초 호출해야합니다. 하지만 setIntreval을 사용하면 1 초마다 호출됩니다. 이 문제를 어떻게 해결할 수 있습니까? 이것에javascript setInterval이 매 30 초마다 호출하지 않습니다.

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

+5

왜'call'과'_seconds' 사이에는 쉼표가 없습니까? – JLRishe

+0

충분한 코드를 게시하지 않았습니다. 'ws '란 무엇입니까? – Pointy

+0

또한 매 초마다 함수가 어떻게 호출되는지 알 수있는 정보를 제공 할 수 있습니까? – wmock

답변

0

시도 대신 call_function

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

그가 누락 된 쉼표 (아마도 오타)를 추가하고 '호출'이 그의 기능인 경우, 솔루션은 어떻게 다릅니 까? 그건 OP 문제가 아닌 것 같습니다. 제공된 정보에 따라이 문제를 실제로 디버그 할 수는없는 것 같습니다. 그게 전부입니다. –

+0

@ Mörre 문제는 그가'_seconds' 값을 어떻게 생산하고 있는지와 관련이있을 수 있습니다. 시간 제한 기간에 하드 코드 된 30000 값을 넣는 것이 좋은 문제 해결 단계입니다 (그러나 대답은 아닙니다). – JLRishe

+0

초를 사용할 수 없다면 설명 된 동작이 아니라 오류가 발생합니다. 그리고 그가 하드 코딩 된 '30000'을 시도했는지 묻는 것은 대답이 아니라 주석이 될만한 가치가 있습니다. 아, 그리고 그것은 당신이 궁금해하는 경우에 대비해 거기에 있습니다. 나는 결코 downvote. –

-1

어떻게 ws.onopen를 호출하는, 코드를 보면 함수 이름을 사용? 현재는 함수를 호출 할 때 에 바인딩 된 this 컨텍스트가 있다고 생각합니다. 그러나 ws 개체에는 init 메서드가 연결되어 있지 않습니다.

JavaScript에서는 setTimeout 및 setInterval 함수를 사용할 때주의해야합니다. 예를 들어, setInterval 함수는 X 초마다 함수를 호출하지 않습니다. X 초마다 이벤트 대기열에 함수가 배치됩니다. 큐에있는 특정 기능의 턴일 때만 실행됩니다. 나는 이것이 당신의 질문에 대한 답일 필요는 없다는 것을 알고 있지만, 당신이 본질적으로 setInterval을 사용하여 30 초마다 호출되는 기능을 보장 할 수 없기 때문에 약간의 결함이 있다고 생각한다.

+1

그는 오류가 발생한다고 말하지 않고 매초마다 불리는 것이라고 말합니다. 문제는 제공된 정보 OP를 사용하여 "디버그 가능"하지 않습니다. –

+1

@wmock이 맞다고 생각합니다. 이 코드에 따라 init 메소드는 호출되지 않습니다. 이 컨텍스트는 ws에 바인딩됩니다. – Karthik

+0

@Karthik 이제 OP에서 함수가 매 초마다 호출되는 이유를 설명하고 오류가 발생하는 것을 설명하면됩니다. 왜 우리는 사실에 충실하지 않아? 그리고 그들은 이것입니다 : 우리는 아무 말도 할 수 없습니다! 당신은 단지 추측이 아니라, 우리가 당신의 가정에 대해 가지고있는 몇 가지 사실을 무시하고 있습니다. 그것은 문제 일 수도 있고 아닐 수도 있습니다. OP가 실제로 말하는 바에 충실하지 않습니다. 오류가 발생하여 항상 전화가 걸려 왔기 때문에 나는이 시점에서 OP를 믿지 않을 이유가 전혀없는 두 가지 _vastly_ 가지입니다. 내 말은, 그 두 가지를 혼란스럽게한다면 그것은 정말 무언가가 될 것입니다 ... –

관련 문제