codingstudy
292
2021-02-21 00:30:47
6
178

자바스크립 콜백 함수 질문


자바스크립트 콜백함수 를 공부하고있는 학생입니다.

공부를 하면서도 콜백이 어떤식으로 쓰이는지

왜쓰는지

피부에 와닿지를 않아서요.. 

껍데기만 보는 느낌입니다..

어떤상황에서 사용을하는지 궁금합니다..

예를들자면 제가 네이버 북마크 api 를 받아와봤는데 

제가 어떤 책종류를 요청하면 네이버 서버에서

요청한데이터를 반환시켜주는...? 이런것도 콜백이라

하나요??






0
  • 답변 6

  • rudwn****
    16
    2021-02-21 01:40:05

    node를 예를 들어보자면... 보통 비동기 작업을 위해 사용합니다. 저도 지식이 깊은게 아니라서 확실한 건 아닙니다.

    특정 작업 A를 실행할 때, return을 바로 하는게 아니라 콜백 함수 B를 등록해두면 A작업이 끝나면  B를 수행하도록 할 수 있습니다.(A작업의 결과를 다시 B작업으로 처리해야 할 경우의 예시)

    비동기에서 중요한게, 비동기 작업이 언제 끝날지를 모른다는 건데(프로그래머가 코드로 순서를 제어하기가 어렵습니다.) 콜백 함수를 등록해두면, 프로그래머는 해당작업이 언제 끝날지 직접 제어하지 않고 비동기 작업을 제어할 수 있게 됩니다.

    Node 책을 보시면 비동기 I/O, 이벤트기반 등 개념이 나오는데 이런게 도움이 되실 같네요. 아니면 구글에 '콜백 함수 쓰는 이유'로 검색하시면 좋은 글들을 찾을 수 있습니다.

  • rudwn****
    16
    2021-02-21 01:43:46

    예를들자면 제가 네이버 북마크 api 를 받아와봤는데 

    제가 어떤 책종류를 요청하면 네이버 서버에서

    요청한데이터를 반환시켜주는...? 이런것도 콜백이라

    하나요??


    위의 케이스에서는 글쓴이분의 입장에서는 그냥 request, response의 경우고,

    네이버 서버 입장에서는 요청받은 책종류를 찾는 작업을 진행할 테고, '책종류를 찾는 작업이 끝나면 request가 온 곳으로 책종류를 response로 보내는' 콜백함수를 등록해서 비동기로 작업을 처리할 수 있다고 볼 수 있겠네요!

  • Jayce Lila
    132
    2021-02-21 06:59:19 작성 2021-02-21 07:09:09 수정됨

    A callback function is a function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.

    저도 그냥 알고만있는데 주로 자바스크립트에 쓰이긴 하지만 

    자세히 읽어보시면 그냥 펑션(함수인가요? ) 그걸 퍼레미터에 넣어주는거에요 .. 보통 함수 안넣는다고 생각하잖아요 퍼레미터에.. 근데 그렇게 넣어서 뭐 작업이 끝나면 호출해주는거에요. 

    call back 이렇게 이해하면 쉬울거에요. 뭐 다하고 나서 (함수를 ) 나중에 불러줘

    아래 코드보면요.. firstFunction 을 호출하죠? 호출할때 print 함수를 그냥 넣어버려요. 넣어버렸죠? 그럼 first function 에서는 뭔 함순지는 모르는데 그냥 대충 이름짓고 나서 나중에 뭐 한다음에 그 함수를 불러버려요... 그리고 string 암거나 넣어버리면 print함수가 호출되죠. 

    순서는.. 

    firstFunction 을 호출할때 퍼레미터를 함수로 넣는다. 그리고 firstFunction 가서 뭐하고 나서 print함수를 호출한다. 

    뭔가 완료 되고 나서 (함수)불러줄게 .. 이렇게 생각하면될듯요. 중요한건!. 아무 함수나 보낼수 있다는게 장점이에요.. type이 정의 되어 있지 않으니까 걍 print function 이나 뭐 assign function 암거나 보내서 그냥 퍼레미터 잘 넣어줘서 호출시켜주면 됩니다. 


    그리고 api 관련된게 왜 나오냐 하면요.. api 받고 나서 뭘 불러줘! 이말입니다.

    api 끝나면 보통 then을 써서 success 나 error 처리하죠?  success 하면 callback 함수 호출해줘 .이말임

    예를 들면 

    function getBookList(callback)

    {

         $.ajax({url: "get/books", success: function(result){

        //이제 책 리스트 받았지? 그럼 callback 호출하면될듯..

             그리고 callBack("리스트 다 받았음"); 
      }});

    }


    존나 쉽죠? 어려우면 말하세요 다시 설명해드림 


    function firstFunction(callBackFunction)
    {
        var justTest = "just assign my value then I am gonna call ''call back function' which is print!!!";
        callBackFunction("print something");
    
    }
    function print(anyString)
    {
        console.log(anyString);
    }
    
    
    //now call the function like
    firstFunction(print);



  • 피자7
    558
    2021-02-21 11:43:12
  • codingstudy
    292
    2021-02-21 19:31:46

    감사합니다 이제봣네요 !! 이해 되었습니다

  • Jayce Lila
    132
    2021-02-28 11:24:04

    이해 못할수도 있어요. 화팅하세요. 대부분 문서들이 어렵게 쓰여져 있고 직접 써보지 않는이상 쉽게 와닿지가 않아요. 직접 써보고 왜안되나 고민해봐야 뇌에서 이건 중요한거라 생각하고 저장하지 글로만 읽으면 진짜 몰라요 

  • 로그인을 하시면 답변을 등록할 수 있습니다.