2017-10-08 1 views
0

if 문에서 조건이 true로 평가되는 경우에만 setInterval()을 사용하여 아래 함수를 계속 호출하고 싶습니다. 참고 :이 기능은 전역입니다.js 함수에서 "if"조건을 사용하는 SetInterval()

function view_stack(){ 
    if(my_stack.size() > 0){ 
     document.getElementById("stack_visual").innerHTML = my_stack.view(); 
    } else { 
     swal("Ohhhh Noes", "There are no items in the stack!", "error"); 
    } 
}  

내가 이룰 수있는 방법이 있습니까?

+0

조건이 참일 경우 간격을 설정 하시겠습니까, 아니면 참이면 실행 만 하시겠습니까? 이 두 가지가 있습니다 – Dellirium

+0

나는 그것을 실행하고 싶습니다. @Dellirium –

+0

해명 해 주셔서 감사합니다. 인터벌에서 함수를 호출하면,'setInterval (view_stack, 1000); 함수는 스택 크기가 있는지 확인하고, 그 크기에 따라 하나 또는 다른 함수를 수행합니다. 그걸 부르세요. – Dellirium

답변

3

아무 것도하지 않을 때 함수가 아무 것도하지 않도록하십시오. 그렇게하면 간격을 계속 유지할 수 있습니다.

효과적으로 코드가 이미 그렇게 기록,이처럼 재 배열 :

function view_stack(){ 
    if(my_stack.size() === 0) return; 
    document.getElementById("stack_visual").innerHTML = my_stack.view(); 
} 

setInterval(view_stack, 1000); 

더 우아한 해결책은 이벤트 기반이 될 것, 즉 my_stack 변경,보기를 업데이트 할 때마다.

+0

그것이 무엇이든간에 'my_stack'을 변경하는 것에 대해 생각해보십시오. 비교적 clunky 한 폴링 접근법을 제거하는 것이 쉬워야한다. – Tomalak

1

당신은 너무 같이하여 setInterval 함수에서 if 문을 넣을 수 :

setInterval(function() { 
    if(my_stack.size() > 0) { 
    view_stack(); 
    } 
}, 1000/60); 

그래서 만 my_stack.size() > 0 경우는 다음 view_stack() 함수를 호출합니다.

참고 setInterval()은 초당 60 회 트리거됩니다.

관련 문제