개발/JavaScript

4. 콜백함수 (2024. 4. 30.)

글쓰는쿼카 joymet33 2024. 4. 30. 23:27

0. 기본정보

#스파르타코딩클럽 #부트캠프 #경과훈련일_12일/94일
- 학습주제: 「자바스크립트 종합반」 (4주차)
- 학습내용: 콜백함수

- 특별사항: [재제출] 자바스크립트 개인과제
- 학습일: 2024. 4. 30.


1. 배운 배용 요약 - 콜백함수 기초

(뤼튼 AI에게 콜백함수에 대해 물어보다)

 

1) 콜백 함수 개요

  • 콜백 함수는 다른 함수의 인자로 전달되어, 특정 이벤트가 발생했을 때 호출되는 함수
  • 즉, 제어권을 가지고 있는 함수가 콜백 함수를 호출하는 것
  • 이를 통해 비동기 처리, 이벤트 핸들링, 고차 함수 등 다양한 프로그래밍 기법을 구현할 수 있습니다.

2) 콜백 함수의 기본 개념

  • 함수 전달: 콜백 함수는 다른 함수의 인자로 전달됨. 이때 함수 자체가 전달되는 것이지, 함수의 실행 결과가 전달되는 것은 아님.
  • 제어권 위임: 콜백 함수를 호출하는 권한은 콜백 함수를 전달받은 함수가 가지고 있음. 따라서 콜백 함수의 실행 시점과 방식을 제어할 수 있음
  • 비동기 처리: 콜백 함수는 주로 비동기 처리에 사용됨. 비동기 작업이 완료되면 콜백 함수가 호출되어 결과를 처리할 수 있음

3) 제어권

(1) 호출시점 - 제어권을 넘겨받음
#함수 내부에서의 콜백함수 예시

var count = 0;

// timer : 콜백 내부에서 사용할 수 있는 '어떤 게 돌고있는지'
// 알려주는 id값
var timer = setInterval(function() {
	console.log(count);
	if(++count > 4) clearInterval(timer);
}, 300);

 

#변수선언으로 활용한 콜백함수 예시

var count = 0;
var cbFunc = function () {
	console.log(count);
	if (++count > 4) clearInterval(timer);
};
var timer = setInterval(cbFunc, 300);

// 실행 결과
// 0 (0.3sec)
// 1 (0.6sec)
// 2 (0.9sec)
// 3 (1.2sec)
// 4 (1.5sec)

 

<두 예시 정리>

code 호출 주체 제어권
cbFunc(): 사용자 사용자
setInterval(cbFunc, 300); setInterval setInterval

 

(2) 인자

(3) this


2. 오류일지 & 해결방법 : 없음

 

3. 오늘의 회고

- 칭찬: 자바스크립트 개인과제 해설 강의를 조각조각 분석하며 파먹은 것 🧐

더보기

그토록 바라던 해설 강의가 올라왔다. 완성본(예시) 코드도 살펴봤다.

'잉...? 내가 이런 코드를 짤 실력이 된다고...? 이거 강의만 듣고서 바로 따라칠 수 있는 과제 맞아...?'

왜 이런 코드를 짰는지 이해하려 해봐도 이해가 되지 않았다. 그래서 해설 강의를 뜯어먹다싶이 돌려봤다. 이해가 안 돼서 워드로 타이핑 치면서 하나씩 정리해갔다. 그렇게 8시간이 흘렀고, 결국 과제는 빈페이지로 제출했다.

 

하루 일과가 마무리 되어갈 즈음, 팀에서 미니발표회를 열었다. 각자의 개인 프로젝트를 설명하는 시간이었는데, 내 프로젝트가 제일 형편없었다. 너무 창피했지만 이 부정적인 감정을 기억하고 싶어 글을 남긴다.

 

언젠가 오늘의 치욕(?)을 웃으며 회상할 수 있는 날이 올거다. 더디고 모자르더라도... 버티자, 버티면 되는 거야.! 

- 반성: '나에게 일주일의 시간만 있었으면..' 이런 희망사항은 그만..!

            현재 내가 할 수 있는 최선을 생각하고, 실천하는 일에 집중하자.

 

- 보충: JS문법 종합 + 개인프로젝트 + 팀프로젝트 = 3가지 병행