• 티스토리 홈
  • 프로필사진
    alpha brain
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
alpha brain
  • 프로필사진
    alpha brain
    • 분류 전체보기 (93)
      • SOFTWARE DEVELOP (68)
        • REACT.JS (3)
        • WEBPACK (4)
        • HTML&CSS (2)
        • EXPRESS (0)
        • DATABASE (0)
        • NODE.JS (3)
        • JAVASCRIPT (24)
        • DOCKER (1)
        • Linux (3)
        • Git (6)
        • GRAPHQL (0)
        • Datastructure (7)
        • Development (6)
        • HTTP (1)
        • Programming Paradigm (1)
        • Algorithm log (5)
        • DEV log (1)
        • Project log (0)
        • I don't know yet (1)
      • 경제, 재무 (23)
      • 여행 (0)
      • 시사, 상식 (2)
  • 반응형
    250x250
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Javascript] 비동기함수(1) - Event Loop
        2020년 03월 29일
        • alpha brain
        • 작성자
        • 2020.03.29.:09
        728x90
        반응형

        코드는 위에서 아래쪽으로 순차적으로 실행된다.

        console.log('첫번째');
        console.log('두번째');
        console.log('새번쨰');

        콘솔에 당연히 순서대로 찍힐것이다. 하지만, web api 중 일부를 사용하다보면 코드가 순서대로 실행되지 않는경우를 볼수가 있다.

        바로가기 : [ Javascript WEB API ]

        console.log('1');
        window.setTimeout(function(){
            console.log('1초 후 실행'), 1000
        })
        console.log('3');

        위의 코드는 web api중 하나인 setTimeout이라는 매서드를 사용한것이다. 코드의 실행시간을 정할수가 있는 기능을 가지고 있다.

        1  
        3  
        1초후 실행 

        이 실행결과가 될것이다.

        console.log('1');
        window.setTimeout(function(){
            console.log('바로실행'), 0
        })
        console.log('3');

        이 코드는 실행순서가 어떻게 될까? setTimeout에 0 을 주었으니 순서대로 실행이 될까?

        1
        3
        바로실행

        실행해보면 위의 결과가 나온다.

        자바스크립트는 event loop라는 방식으로 코드를 실행한다.

        바로가기 :[ event-loop ]

        위 사이트로 가면 자바스크립트가 어떤식으로 코드를 실행시키는지 직관적으로 알 수 가있다.
        (정말좋은 사이트같다.)

        위의 사이트를 봤다면 setTimeout이 어떤식으로 동작하는지 알수 있었을 것이다.


        setTimeout은 web api라는곳으로 따로 빠지고

        해당 시간후 callback queue라는곳에 들어가고

        모든 코드들이 실행되면 다시 call stack으로 들어가서

        정상적으로 setTimeout의 callback함수가 실행되는것을 볼 수 있을 것이다.


        이 원리가 비동기함수가 작동하는 원리의 전부이다.

        위의 코드가 시간에 0을 주었음에도 마지막에 찍히는 이유인것이다.

        이 원리만 잘 알면 비동기 함수를 사용할때 어떤점을 주의해야 할지 알 수 있다.

        다음 포스팅은 비동기 함수에서 처리한 값(data)을 어떤식으로 사용해야할지 포스팅 해야겠다.

        728x90
        반응형

        'SOFTWARE DEVELOP > JAVASCRIPT' 카테고리의 다른 글

        [Javascript] 비동기함수(3) - Promise  (0) 2020.05.26
        [Javascript] 비동기함수(2) - CallBack  (0) 2020.05.25
        [Javascript] Pseudoclassical Subclass Instantiation  (0) 2020.02.23
        [Jacascript] call, apply, bind and this  (0) 2020.02.21
        [Javascript] class inheritance in ES6  (0) 2020.02.14
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바