12/13 TIL

taetae·2022년 12월 14일
0

내배캠 TIL

목록 보기
19/48

Node. js 입문주차

동기(sync)와 비동기(async)

  • 동기(Sync)
    먼저 실행된 코드의 결과가 나올 때까지 대기하는 것.

ex> 정원이 30명인 놀이기구를 탄다고 가정을 하자. 놀이기구가 운행할 때 5분이 걸린다고 한다.
놀이기구를 막 태운 시점에서부터 5분이 지나 이미 놀이기구에 타 있는 사람들이 다 내리기 전까지 대기자는 탑승을 할 수 없다. 이것을 놀이기구 탑승/하차가 동기적으로 관리된다고 볼 수 있다.
(놀이기구가 시작/종료 될 때 까지 대기하는 것)

  • 비동기(Async)
    실행된 순서와 관계 없이 결과가 나오는 것.

ex> 정원이 최대 30명인 맛집이 있다고 가정한다. 입장은 선착순이고 퇴장은 다 먹은 순대로 나올 수 있다. 다 먹은 사람이 나오면 나온 사람 수 만큼 다시 입장이 가능하다. 이것을 입/퇴장이 비동기적으로 처리된다고 볼 수 있다.


Blocking Model & Non-Blocking Model

  • Blocking Model
    코드의 실행이 끝나기 전까지 실행 제어권을 다른 곳에 넘기지 않아 다른 작업을 하지 못하고 대기하는 것.

  • Non-Blocking Model
    코드의 실행이 끝나지 않아도 실행 제어권을 다른 곳에 넘겨 다음 코드가 실행될 수 있는 것.

  • 자바스크립트는 Async + Non-Blocking Model을 채용해 현재 실행중인 코드의 실행이 끝나지 않아도 다음 코드를 호출
    결론적으로 자바스크립트는 각 명령들이 순서대로 실행될 수 있게 구현되어 있지만,
    Non-Blocking Model에 의해 동기적 명령이 아닌 모든 함수는 비동기적으로 실행


프로미스(Promise)

  • 자바스크립트에서 비동기 처리를 동기로 처리할 수 있게 돕는 Built-in(미리 내부적으로 정의 된) 객체 유형
  • Promise 생성자 인터페이스
    executor에는 함수만 올 수 있고 인자로 resolve, reject가 주입된다.
    executor는 Promise의 실행함수라 불리고 Promise가 만들어질 때 자동으로 실행.
    Promise가 연산을 언제 종료하는지 상관하지 않고 resolve, reject 중 하나를 무조건 호출해야 함.
  • Promise의 상태
    - 대기(Pending): 이행하거나 거부되지 않은 초기 상태
    - 이행(Fulfilled): 연산이 성공적으로 완료됨
    - 거부(Rejected): 연산이 실패함

객체(Object) 리터럴

  • 자바스크립트의 데이터 타입은 크게 원시타입객체타입으로 분류

    • 원시타입: 단 하나의 값만을 나타내고 원시 타입의 값은 변경이 불가능.
    • 객체타입: 다양한 타입의 값을 하나의 단위로 구성한 복잡적인 자료 구조이며, 객체타입의 값은 변경 가능한 값.
  • 자바스크립트는 객체 기반의 프로그래밍 언어이고, 자바스크립트를 구성하는 거의 모든 것은 객체로 구성되어 있다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 하나의 프로퍼티는 KeyValue로 구성.

  • 객체 리터럴
    리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법.
    객체 리터럴은 객체를 생성하기 위한 표기법을 말 함.
    객체를 생성하기 위해 Class를 먼저 선언하고 new 연산자와 함꼐 생성자를 호출할 필요 없이 일반적인 숫자, 문자열을 만드는 것과 유사하게 객체를 생성할 수 있다.

  • 객체 리터럴은 중괄호{} 내에 0개 기상의 프로퍼티를 정의해서 선언.

  • 프로퍼티란 객체의 상태를 나타내는 값(Data). KeyValue로 구성 됨.

  • 메서드란 프로퍼티를 참조하고 조작할 수 있는 동작(behavior)을 나타냄.
    객체의 프로퍼티 값이 함수로 구성되어 있을 경우 메서드라고 부름.


Error handling

에러 핸들링은 에러를 관리하는 방법이고 예상치 못한 상황에 대처하는 방식.
에러는 예상할 수 있는 에러예상치 못한 에러로 구분. 일반적인 어플리케이션을 설계할 때는 예상치 못한 에러 상황이 더욱 많을 것을 가정해야 함.


Class

클래스는 정보를 묶는 것. 현실과 비슷한 개념(객체)을 나타내기 위한 도구.
클래스를 미리 정의해 두면 필요할 때마다 해당 클래스로 동일한 틀을 가진 객체를 만들 수 있다.

  • 생성자(Constructor)
    클래스 내부에서 constructor()로 정의한 메서드를 '생성자'라고 부름.
    미리 정의한 클래스를 기반으로 인스턴스를 생성할 때 자바스크립트 내부에서 호출되는 메서드.

0개의 댓글