#개념 정리
다른 코드의 인자로 넘겨주는 함수인데 - 인자로 넘겨준다는 말은 "콜백함수를 넘겨 받는 코드가 있다"라는 뜻,
forEach - setTimeout 등등
위 둘과 같은 코드는 이 콜백함수를 필요하는 시점에 따라 적절하게 실행됨 (콜백함수를 넘겨준 주체에게 제어권이 그들에게 있음 (내가 아니고)).
* 제어권을 넘겨줄테니 너의 그 로직으로 처리해줘 !
var count = 0;
var cbFunc = function(){
console.log(count);
if(++count > 4) clearInterval(timer);
};
var timer = setInterval(cbFunc, 300);
cbFunc() 를 수행한다면 그 호출주체와 제어권은 모두 사용자(나)가 됨.
setInterval()에게 넘겨준다면 그 호출주체와 제어권은 모두 setInerval이 됨.
map(function(currentValue, index) {})
*제어권을 넘겨받을 코드에서 콜백함수에 별도로 this가 될 대상을 지정한 경우에는 그 대상을 참조한다.
콜백지옥 : 콜백함수를 익명함수 - 익명함수의 익명함수 또 그 익명함수의 익명함수 그 매개변수 자리에 익명함수
깊어지다 보면 반복과정으로 인해 끝도 없이 깊어진 상태.
동기 vs 비동기
Sync vs Async
동기 : 현재 실행중인 코드가 끝나야 다음 코드가 실행.
비동기 : 실행중인 코드의 완료여부와 무관하게 즉시 다음 코드로 넘어가는 방식.
ex : setTimeout addEventLitsner 등
요청, 실행대기, 보류 등 관련된 코드는 모두 비동기적 실행 코드.
순서를 보장하지않는다.
비동기 작업의 동기적표현 - (1) Promise
비동기 처리에 대해, 처리가 끝나면 알려달라는 약속.
.new 연산자로 호출한 Promise의 인자로 넘어가는 콜백은 바로 실행됨
.이 내부의 resolve(또는 reject) 함수를 호출하는 구문이 있을 경우 resolve(또는 reject) 둘 중 하나가 실행되기 전까지
다음(then), 오류(catch)로 넘어가지않음.
리팩토링 : 비효율적인 코드를 보다 효율적으로
11일차(개인 프로젝트 - 영화 검색 사이트 / 문자열? -> 각 Element로 할당) (0) | 2023.06.01 |
---|---|
10일차 TIL(DOM 뜯어보기) (0) | 2023.05.30 |
8일차 TIL (변수 선언과 데이터, null/undefined) (0) | 2023.05.26 |
7일차 TIL (ES6, Map(), Set()) (0) | 2023.05.24 |
6일차 TIL (기초 삼항연산자, switch문 ) (0) | 2023.05.22 |