자바스크립트에서 딜레이를 주고 싶습니다.

자바스크립트에서 딜레이를 주고 싶습니다.

QA

자바스크립트에서 딜레이를 주고 싶습니다.

본문


<script>
// test1
console.log('A ');
    loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
console.log('B ');
    loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
console.log('C ');
    loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
</script>

 


<script>
//test2
    document.getElementById("B1").innerHTML="<img src='img/"+B1+".png'>";
    loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
            document.getElementById("B2").innerHTML="<img src='img/"+B2+".png'>";
    loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
            document.getElementById("B3").innerHTML="<img src='img/"+B3+".png'>";
    loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
</script>

 

위 test1 처럼 하면 2초마다 A B C 동작이 잘됩니다.

그래서 실제 적용하려고 test2 처럼 해보니

6초 있다가 한꺼번에 그림이 나와버리네요... 

하나씩 시간을 줘가며 그림을 보여주고 싶은데 어떻게 해야할까요

 

 

이 질문에 댓글 쓰기 :

답변 6

https://www.daleseo.com/js-sleep/

여기서 동기식구간 보시며 될 듯 하네요



<script>
<script>
//test2
    document.getElementById("B1").innerHTML="<img src='img/"+B1+".png'>";
    //loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
    setTimeout(function(){}, 2000);  // 2초간 딜레이

    document.getElementById("B2").innerHTML="<img src='img/"+B2+".png'>";
    //loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
    setTimeout(function(){}, 2000); // 2초간 딜레이

    document.getElementById("B3").innerHTML="<img src='img/"+B3+".png'>";
    //loopTime = Date.now() + 2000;    while (Date.now() < loopTime) {} // 딜레이
    setTimeout(function(){}, 2000); // 2초간 딜레이
</script>


 

위에소스 참고 하시면 될꺼 같습니다.

간단히 다음처럼 하면 됩니다


<style>
#B1, #B2, #B3{display:none;}
</style>
<div id='B1'><img src=~~~~></div>
<div id='B2'><img src=~~~~></div>
<div id='B3'><img src=~~~~></div>
<script>
$(function(){
 setTimeout(function(){ $("#B1").show(); }, 2000);
 setTimeout(function(){ $("#B2").show(); }, 4000); 
 setTimeout(function(){ $("#B3").show(); }, 6000);
});
</script>

이렇게 하면  미리 시간을 정해놓는거라 중간에 시간을 딱 못 맞출 경우엔 원하는 동작을 할 수 없어서요...  필요할때 딜레이를 주고 싶어서 질문 들린거에요..  답변 감사합니다.

본문대로 하면 2초마다 innerHTML에 내용이 들어가는건 맞는데

2초동안 계속 반복문 돌리다가 끝나면 다시 2초동안 반복문 돌리고.. 하는 식이라

내용은 2초마다 들어가지만 총 6초짜리 반복문이 다 끝나고나서 화면에 한번에 표시되는거라 그러는거구요

 

    document.getElementById("B1").innerHTML="<img src='img/"+B1+".png'>";

 

    setTimeout(function(){

        document.getElementById("B2").innerHTML="<img src='img/"+B2+".png'>";

    }, 2000);

 

    setTimeout(function(){

        document.getElementById("B3").innerHTML="<img src='img/"+B3+".png'>";

    }, 4000);

 

이렇게 하세요

예를 들어서

a 보여준 후에 5초 있다 b보여줌
b가 표시되고 10초후 c 보여줌
c 표기후 5초있다 확인버튼 표시
버튼을 누르길 기다렸다가
버튼을 클릭하면 f 보여주고 10초 대기

예를 들어 봤지만.. 위같은 경우 setTimeout()으로는 구현이 잘 안되서 질문 드린거에요.
제가 너무 초보라 위처럼 하는 이유자체가 개념이 잘 못 된것일수 있는데.. 그걸 모르니 이런 질문을 드리게 된..
검색해보니 자바스크립트는 php처럼 순차적 실행이 아니라고 하더군요. 동기 비동기 이런게 있다는걸 이번에 알게됨..

답변을 작성하시기 전에 로그인 해주세요.
전체 123,617 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT