• 티스토리 홈
  • 프로필사진
    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] 비동기함수(2) - CallBack
        2020년 05월 25일
        • alpha brain
        • 작성자
        • 2020.05.25.:43
        728x90
        반응형

        비동기와 콜백

        저번 포스팅에서는 비동기 함수가 어떻게 작동하는지 보았다.

        client에서 자원을 server에게 요청하는 코드들은 대부분 비동기함수로 작동을 한다.

        예를 들어 어떤 이벤트가 발생했을때 아래의 함수가 실행된다고 가정해보자.

        server에게 data를 가져오는 http요청을 하는 함수이다.

        // Client side code...
        
        
        function getUserData() {
          //request (kim 이라는 user의 데이터를 요청 )
          someCallToServer({username:"kim"},(err,data)=> {
            if(err){
              return "err!!!";
            }else{
        	  // 받아온 data를 가지고 작업...
            }
          })
        }

         

        보통 이런식으로 작업을 하게 된다. 

        callback으로 넘겨준 함수에서 작업을 하는 이유가 무엇일까??


        callback의 원리와 비동기 함수의 작동원리를 잘 이해했다면 그리 어렵지 않은 문제이다

        [Javascript] callBack은 call me back
        Cambridge Dictionary 에서 call back의 뜻을 알아보았다. 정의들을 보면 빈번하게 중복되는 단어를 볼수가 있다. request 와 return 어떤 요청을하고 그에 따른 리턴을 받는것. 프로그래밍에서의 callback도 동일..
        artdev.tistory.com
        [Javascript] 비동기함수(1) - Event Loop
        코드는 위에서 아래쪽으로 순차적으로 실행된다. console.log('첫번째'); console.log('두번째'); console.log('새번쨰'); 콘솔에 당연히 순서대로 찍힐것이다. 하지만, web api 중 일부를 사용하다보면 코드가 순..
        artdev.tistory.com

        http request는 대표적인 비동기함수이다. (http이 외에도 file을 다룬다거나 db작업을 할때도 비동기 작업은 빈번하다.)

        비동기 함수는 callstack이 모두 비워진 이후에 실행이 된다. 

        내가 원하는 일을 하려면 (어떤 버튼을 눌렀을때 server에서 data를 받아와서 view에 보여주는) callback으로 내가 하려던 일을 넘겨주어야 실행이 될것이다. 비동기 함수에서 callback은 실행 순서를 보장하기 위해서 사용한다고 이해하면 될것이다.


        비동기의 비동기의 비동기의..

        코드 작업을 하다보면 비동기 요청을 연속적으로 하는 일이 빈번하다.

        비동기 함수의 실행순서가 call스택이 비워져야 비로서 실행이 되기때문에 비동기 함수를 중첩해서 사용해야 내가 원하는 실행순서가 된다.

        // Client side code...
        
        
        function getUserData() {
          //request (kim 이라는 user의 데이터를 요청 )
          someCallToServer({username:"kim"},(err,data)=> {
            if(err){
              return "err!!!";
            }
        	someCallToServer({data : data},(err,data) => {
              if(err){
                return "err!!!";
              }
              someCallToServer({data : data},(err,data) => {
                if(err){
                  return "err!!!";
                }
                //...
              })
            })
          })
        }
        
        // 비동기 함수가 계속 쓰이게 되면 callback함수내부에 다시 비동기 함수를 사용하게 된다.

        계속 이렇게 사용하면 callback에 서 계속 부르기 때문에 코드의 depth가 계속 늘어서 가독성이 나쁘게 되고, 관리하기도 힘이 든다.

        javascript는 이런 문제를 callback Hell 이라고 표현한다. (말 그대로 callback 지옥이다.!)


        Promise의 등장

        promise라는 문법이 es6에 등장하여 callback hell을 피할수 있게되었다.

        다음 포스팅은 promise를 하도록 하겠다.

        728x90
        반응형

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

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

        티스토리툴바