7월26일 월요일 TIL

김병훈·2021년 7월 26일
0

til

목록 보기
46/89

blocking

  • 하나의 작업이 끝날 때까지, 이어지는 작업을 막는 것

synchronous(동기적)

  • 시작 지점과 완료 지점이 같은 상황
    • 커피를 먼저 주문한 사람1, 사람1의 주문이 끝나고(완료시점) 사람2가 주문을 시작했다(시작 시점).
  • 위에 예시처럼 말고, 좀 더 효율적으로 커피숍을 운영하는 방법
    • 커피 주문이 blocking 되지 않고, 언제든지 주문이 가능하게 한다.
    • 커피가 완성되는 즉시 제공한다.
      • 사람1의 완료시점과 사람2의 시작시점이 같은 필요가 없다.
  • 그래서 Node.js를 non-blocking하고, 비동기적(asynchoronous)으로 작동하는 런타임으로 개발하게 되었다.
  • JS의 비동기적 실행은 웹 개발에서 특히 유용하다.
  • 비동기적으로 작동되어야 효율적인 작업들
    • 백그라운드 실행, 로딩 창 등의 작업
    • 인터넷에서 서버로 요청을 보내고, 응답을 기다리는 작업
    • 큰 용량의 파일을 로딩하는 작업

고차함수와 콜백

  • 고차함수의 개념을 한 번 복습해보면
    • 다른 함수를 인자로 전달받을 수 있다.
      • 고차함수의 인자로 전달되는 함수를 콜백 함수라고 한다.
    • 고차함수는 다른 함수를 리턴할 수 있다.
      • 커리함수라고도 한다.
    • 함수를 리턴하는 함수 와 함수를 인자로 받는 함수 모두 고차함수 이다.
    • 고차함수는 콜백 함수와 커리 함수의 상위 개념이다.
      • 콜백 함수를 전달 받은 caller 함수는, 함수 내부에서 이 콜백함수를 호출할 수 있다.
        caller는 조건에 따라 콜백 함수의 실행 여부를 결정할 수 있다. 아예 호출하지 않을 수도 있고, 여러 번 실행할 수도 있다. 앞으로는 특정 작업의 완료 후에 호출하는 경우를 자주 접할 것이다.

기타 질문

let numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);

// [1, 2, 3, 4, 5]
  • 렇게 하면 오름차순으로 되고 sort()만하면 내림차순으로 된다?
profile
블록체인 개발자의 꿈을 위하여

0개의 댓글