0

간격으로 이미 작동하는 함수 (간격 함수) 내에서 간격을 사용하여 시간을 확인할 수있는 함수를 호출하고 싶습니다. 내가 일을했을뿐입니다 그건 :간격으로 호출 된 함수에서 간격으로 함수 호출 JS

var interval; 
var time = prompt("Insert amount of time in seconds"); 
function log() 
{ 
console.log ("log() called."); 
} 
function onrunning() 
{ 
    interval = setInterval(log,time*1000); 
} 
gameloop = setInterval(onrunning,5);//This interval must not cleared 

시간의 첫 번째 양이 잘 작동하지만 이후가) 로그 (계속 전화 빨라 브라우저 충돌까지 함수의 그. 나는 잘못된 장소에

var interval; 
var time = prompt("Insert amount of time in seconds"); 
function log() 
{ 
console.log ("log() called."); 
} 
function onrunning() 
{ 
    interval = setInterval(log,time*1000); 
} 
gameloop = setInterval(onrunning,5); 
clearInterval(interval); //tried this but no differece. 
+1

'setInterval' - 콜백을 여러 번 호출합니다.'setTimeout'은 콜백을 한 번 호출합니다 - 그 도움이 확실하지 않은 경우 –

+1

정확히''clearInterval (interval)' '을 정확히 호출 했습니까? 전체 코드에 포함시킬 수 있습니까? – mdziekon

+0

나는'log'를 주어진 시간만큼 (프롬프트에서 주어진다) 실행하기를 원한다고 생각하고 로깅을 중지하겠습니까? 또는 지시 된 시간이 지나면 한 번만 지나갈 것입니까? – Teemu

답변

0

당신은 삭제되는 간격을하려고 노력했다.

코드에서 을 지우려고 시도하기 전에이 생성되었습니다 (기본적으로 아무 작업도하지 않습니다).

당신은 후에는 실행 생성 된 그것을 를 지우려면 :

function log() 
{ 
    console.log ("log() called."); 
    clearInterval(interval); 
} 

당신은 또한 당신이 onrunning 또한 "간격"콜백으로 발사되어, 새로운 생성되기 때문에 통지한다 각 콜백 실행 프레임에서 로그 간격. 이 간격도 지우려면 위에 표시된 것과 동일한 로직을 복제하고 onrunning 콜백 내에 복사하십시오.


내가 한 번만 설정 시간이 지난 후 (아마,뿐만 아니라 콜백 "onrunning")는 "로그"콜백을 발사 할 가정합니다. 이 경우 setInterval 대신 setTimeout을 사용해야합니다.

이것은 이미 으로 지적되었다. Jaromanda Xin this comment.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 그런 식으로 일을했지만 log() 함수를 더 빠르고 더 빨리 호출합니다. 내가 원하는 건 log() 함수를 계속적으로 호출하는 것이다. 'var timeout1; var time = prompt ("초 단위로 시간 삽입"); function log() { console.log ("log()가 호출되었습니다."); clearTimeout (timeout1); } function onrunning() { timeout1 = setTimeout (log, time * 1000); } gameloop = setInterval (onrunning, 5); ' –

+0

이 경우''log'' 간격이 아닌''onrunning'' 간격을 지워야합니다. 이미 말했듯이''log'' 간격을 지우는 것과 똑같은 논리를 반복하면됩니다. – mdziekon