Callback?

Parker.Park·2022년 3월 19일
0

코드캠프

목록 보기
6/34

Callback?

콜백함수란 다른 함수의 인자로써 넘겨진 후 특정 이벤트에 의해 호출되는 함수이다.
이것이 무슨말인가. 다시 말하자면, 함수가 함수를 부른다는 뜻 인것으로 생각 된다.
크게 2가지로 정의하고 있었다.

A callback function is a function which is:
1.passed as an argument to another function, and,
2.is invoked after some kind of event.

  1. 다른 함수의 인자로 이용되는 함수.
  2. 이벤트에 의해 호출되어지는 함수.

Callback 함수의 예

//함수에 파라미터를 다른 함수로 가져간 예

function add (x, y, callback){
	let result = x * y
	callback(result)
}

function result (data) {
	console.log(data, "callback")
}

add(5, 10, result) // 50 'callback'

//이벤트에 의해 호출되어지는 함수.
<button onClick=Function()></button>

그렇다면 콜백함수는 왜 발생 한 것이가?

사실 이 부분 때문에 이해하는데 애를 먹고 있다.(여전히 그렇다😭) 최대한 이해하는 선에서 정리해 보겠다.

  • 협업 형태에서 순차적으로 실행하기 위해서
    A라는 함수를 실행하고 B를 실행하고 싶을 수도 있고, C를 실행하고 싶을 경우가 발생할 수도 있다. A함수가 실행되고 바로 B함수를 실행하고 싶은데 각각 다른 코드라인에 작성하다가 에러가 발생한다면 문제가 발생 할 수도 있다.
  • 비동기 방식
    비동기 방식은 Javascript에서 node.js의 특징 중 하나이다. 하나의 스레드(?)를 공유하는 상황에서(환경상 Javascript 엔진이 UI스레드를 공유할 수 없는 상황이라 한다.) 고성능을 유지하기 위해서는 실행중인 코드의 완료여부와는 무관하게 다음 코드로 넘어가는 방식이다. 자칫 하다가는 유명한 콜백지옥에 빠질 수 있다고 한다. 콜백지옥과 같이 비동기 방식에도 문제가 발생하여 나중에는 Promise 나 await/async 와같은 문법이 추가 되었다.
obj.callback(parameter1, () => {
    obj.callback(parameter2, () => {
        obj.callback(parameter3, () => {
            obj.callback(parameter4, () => {
                obj.callback(parameter5, () => {
                    obj.callback(parameter6, () => {
                        console.log('Hello, World!')
                    })
                })
            })
        })
    })
})
// 콜백안에 콜백이 들어간 함수는 보기에도 힘들고, 
//나중에 오류가 발생 할 경우 수정하기도 힘들다고 한다.

최대한 이해한대로 정리해 보았다.(아직 많이 어렵다🥲)

참고

[콜백함수가 뭔지 한국어로 쉽게 설명하는 영상,Youtube,2022년03월20일접속]
https://www.youtube.com/watch?v=-iZlNnTGotk&list=WL&index=61
[callback 함수,나무위키,2022년03월20일접속]
https://namu.wiki/w/callback%20%ED%95%A8%EC%88%98
[Node.js,나무위키,2022년03월20일접속]https://namu.wiki/w/Node.js
[콜백 함수(Callback)의 정확한 의미는 무엇일까?,tistory,2022년03월20일접속]
https://satisfactoryplace.tistory.com/18

profile
개발자준비중

0개의 댓글