Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 4.33 KB

File metadata and controls

48 lines (39 loc) · 4.33 KB

항해99 8기 3주차 <Node.js 입문> TIL_20220722

주특기 입문 주차 팀 과제

for문이 있는데 for...in/for...of 문법이 새로 나온 이유는 무엇일까요? 우리가 이것을 고르는 기준은 무엇일까요?

  • for in 반복문 : 반복 가능한 객체의 요소를 반복해주며 선언한 변수에 값이 직접 들어가지 않고 요소의 키 값을 전달한다. 속성 이름을 통해 반복한다.
  • for of 반복문[Symbol.iterator] 속성을 가지는 컬렉션 전용. 반복 가능한 객체(iterable)를 순회할 수 있도록 해준다. Iterator 속성이 있는 객체인 Array, Map, Set, String, TypedArray, arguments 등의 값을 반복할 수 있다. 속성 값을 통해 반복한다.

Blocking Model과 Non-Blocking Model의 차이점은 무엇일까요? 이것과 동기, 비동기처리는 무엇이 다른걸까요?

동기(Sync)/비동기(Async), Blocking Model/Non-Blocking Model에 대한 개념

  • "동기로 실행된다" 라고 함은, 먼저 실행된 코드의 결과가 나올때까지 계속 신경쓴다는 것.
  • "비동기로 실행된다" 라고 함은, 실행된 순서와 관계 없이 콜백함수를 주어서 값을 자동으로 리턴 받을 수 있는 것.
  • Blocking Model이란, 코드가 실행됐다고 했을 때, A함수가 B함수를 호출하면 제어권을 A가 호출한 B 함수에 넘겨준다. 제어권을 넘겨 받은 B는 함수를 실행하고 A는 제어권을 B에게 넘겨주었기 때문에 함수 실행을 잠시 멈춘다. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다.
  • Non-Blocking Model이란 코드가 실행됐다고 했을 때, A함수가 B함수를 호출해도 제어권은 그대로 자신이 가지고 있는다. A함수가 B함수를 호출해도 A함수는 제어권을 계속 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행한다. 만약 B함수가 실행이 완료되면 값을 A함수에게 반환만 해주는 것이다.

동기(Sync)/비동기(Async), Blocking Model/Non-Blocking Model 조합 예시

  • 동기와 비동기는 프로세스의 수행 순서 보장에 대한 매커니즘이고 블로킹과 논블로킹은 프로세스의 유무 상태에 대한 개념으로 완전히 별개의 개념.
  • Blocking Model || 동기(Sync)
    • 선배: 이것 좀 부탁해요~
    • 후배: 네 바로 끝나니까 기다려주세요 // 선배가 제어권을 후배에게 넘겨줌
    • 선배 : (아무것도 안하고 기다림, 언제끝나는지 궁금) // 블로킹 모델이기 때문에 제어권을 넘겨줘서 아무것도 안함
    • 후배 : (타닥타닥,,,)
    • 선배 : (지켜보는중) // 동기적이기 때문에 계속 언제 끝나나 대기함
    • 선배 : 오 끝났네 (자기 할일 하러감..) // 제어권을 넘겨받음
  • Blocking Model || 비동기(Async)
    • 선배 : 이것 좀 부탁해요~
    • 후배 : 네 기다려주세요~**//제어권을 넘겨받음**
    • 선배 : (아무것도 안하고 기다리지만 후배가 언제끝나는지도 궁금하지 않음) // 비동기적이기 때문에 후배가 끝나면 알려줄 것이지만 제어권이 없기 때문에 아무것도 하지 못함
    • 후배 : (타닥타닥,,,) 여기요! // 콜백함수 실행 및 제어권 넘겨받음
    • 선배 : (할 일 하러 감)
  • Non-Blocking Model || 동기(Sync)
    • 선배 : 이것 좀 부탁해요~ // 제어권을 넘겨주지 않음
    • 후배 : 넵(타닥타닥,,,)
    • 선배 : (할거 하다가) 다하셨나요? // 논 블로킹이기 때문에 자기 일을 하면서
    • 후배 : 잠시만요
    • 선배 : (할거 하다가) 다하셨나요? // 동기적이기 때문에 계속 언제 끝나는지 신경 씀
    • 후배 : 네 여기요~
  • Non-Blocking Model || 비동기(Async)
    • 선배 : 이것 좀 부탁해요~ // 제어권을 넘겨주지 않음
    • 후배 : 넵 다 하고 말씀드릴게요(타닥타닥,,,) // 비동기적이기 때문에 작업이 끝나면 알아서 호출
    • 선배 : (할일 하는 중) // 논 블로킹이기 때문에 자기 일을 하면서
    • 후배 : 끝났어요, 여기요! // 비동기이기 때문에 끝나서 호출