함수를 인자로 넘겨주는 함수
ex) map, forEach(), setTimeout() 등
콜백함수의 제어권은 받는 함수가 가지고 있다!
우리가 제어할 수 없다.
콜백함수도 함수이기에 기본적으로 전역객체를 가리킨다.
but, 제어권을 넘겨받을 코드에서 콜백 함수에 별도로 this가 될 대상을 지정한 경우에는 그 대상을 참조한다!
생성자.prototype.함수 = function() {}
보통 메서드를 정의할 때 사용한다.
map, apply, call을 이용해서 원하는 인자에서 콜백 함수 내부에 사용될 this를 명시적으로 바인딩 해준다.
함수 -> 매개변수 -> ... 반복
보통 코드가 > 모양을 가지고 있다.
가독성이 안좋고 수정이 어려워서 유지보수하기 힘들기 때문에 콜백지옥에 빠지지 않도록 주의해야한다.
동기: 순차적으로 앞에 처리한 것이 끝날때까지 기다리고 하나씩 처리한다. sync
비동기: 병렬적으로 따로따로 처리한다. 순서와 상관없이 먼저 완료된 것을 처리한다. async
-> setTimeout, 통신이 주로 이를 사용한다.
순서를 보장하지 않는 비동기
언제 필요한 것이 처리될 지 모르기때문에 동기적으로 처리해주어야 한다.
비동기의 단점 보완
동기적인 것 처럼 보이게 해주는 3가지
.then()
구문을 실행한다.
실패하면 reject, 예외처리를 해준다.
.catch()
fucntion* () {}
변수 = yield 메서드();
yield를 만나면 멈췄다가 다음걸 처리한다.
async function() {}
화살표 함수 사용 시
async () =>
yield 처럼 await를 만나면 멈췄다가 처리한다!
다양한 새로운 언어들로 인하여 이해가 어려웠다. 예제의 경우 출력을 실행해보면 얕게 이해할 수는 있었지만, 활용이나 어디서 사용해야할지는 프로젝트, 페이지 제작을 수행해보면서 익혀야 할 것 같다.
얕게 이해했기 때문에 자세한 내용을 말로 표현하기가 힘들었고, this 바인딩이 어떤 부분에서 실행되고 실행되지 않는지, 암기가 필요한 것 같다.
3주차 강의보다 4주차 동기/비동기와 콜백함수의 이해는 잘 되었지만, this 바인딩이 어느 부분에서 필요하고 실행되는지와 3주차 강의 내용을 완벽하게 이해하려면 다양한 경험이 필요할 것 같다.