callback함수,promise의 차이점과 promise의 상대적 장점

김진겸·2023년 1월 19일
0

callback함수의 정의와 쓰임에대해서 공부했는데 callback함수의 단점에대해 알게되었다. callback지옥!!! 그리고 이 단점을 극복시켜주는 것이 promise라는것을 알게되었다. 그리고 이 promise의 단점도 있는데 이를 해결해주는것은 다음글에 올리겠다.

  1. callback함수가 뭐야?
  2. promise는 뭐지?
  • callback함수가 뭐야?
    함수를 호출하고 전달인자에 문자열,숫자열,배열,객체등 다양한 데이터를 넣을 수 있는데 함수또한 넣을 수 있다.
    이때 인자로서 들어가는 함수를 callback함수라고 한다.
    이callback 함수는 언제 어떻게 쓰이는가? 예를 살펴보며 알아보자.

      const myCallback = () => {
          //XMLHttpRequest 객체를 생성합니다.
          const aa = new XMLHttpRequest();
    
          //HTTP 요청 초가화하는 open메서드를 호출하여 HTTP요청 메서드(get)와 url을 작성합니다.
          aa.open("get", "http://numbersapi.com/random?min=1&max=200");
    
          //HTTP 요청을 전송합니다.
          aa.send();
    
          //addEventListener 함수안에 웹페이지에서 사용할 모든 파일의 다운로드가 완료되었을때 발생시킬 load 이벤트를 등록시킵니다.
          //그 다음 실행될 callback함수를 작성합니다.
          aa.addEventListener("load", (res) => {
            console.log("데이터가 로드되면 이거 실행시켜줘");
            console.log(res);
            console.log(res.target);
    
            const num = res.target.response.split(" ")[0];
    
            const bb = new XMLHttpRequest();
            //num에 담긴 변수 값을 이용하여 게시글 조회 요청을 합니다.
            bb.open("get", `https://koreanjson.com/posts/${num}`);
            bb.send();
            bb.addEventListener("load", (res) => {
              console.log("두번째는 이거 실행시켜줘");
              console.log(res);
              console.log(res.target.response);
              console.log(JSON.parse(res.target.response));
              console.log(JSON.parse(res.target.response).title);
    
              //받아온 데이터의 userid값을 가져와 userId라는 변수에 담아줍니다.
              const userId = JSON.parse(res.target.response).UserId;
              const cc = new XMLHttpRequest();
              
              // userId에 담긴 값을 이용하여, 동일한 유저(작성자)가 쓴 게시글 조회를 요청합니다.
              cc.open("get", `http://koreanjson.com/posts?userId=${userId}`);
              cc.send();
              cc.addEventListener("load", (res) => {
                console.log("마지막으로 이거 실해시켜줘");
                console.log(res.target.response);
              });
            });
          });
        };
대상 함수가 뭐지?? 뭘 말하는걸까? 대상함수가 현재 로직을 작성하고 있는 함수를 말하는것인가?
실행시키고 싶은 로직을 대상 함수에 보내줄수 있다고.

1. 대상 함수 안에서 실행시키고 싶은 로직(함수)를 내가 작성해서 대상 함수로 보내줄 수 있습니다.
2. 대상 함수로부터 받아온 값을 인자로 처리 가능합니다.




profile
성장에 목마른 입문자입니다!

0개의 댓글