항해14기 본과정/항해14기 개발일지

[항해 14기] 개발일지12 (동기/비동기, 객체 리터럴)

스쿼트잘함 2023. 4. 24. 22:00

주특기 입문

 

1. 동기, 비동기

1) 동기

- 먼저 실행된 코드의 결과가 나올때까지 대기

2) 비동기

- 실행된 순서와 관계없이 결과가 나옴

3) Blocking Model

- 코드의 실행이 끝나기 전까지 실행 제어권을 다른곳에 넘기지 않음

4) Non-Blocking Model

- 코드의 실행이 끝나기 전에 실행 제어권을 다르곳에 넘김겨 다음 코드 실행 가능

- JS 방식, 동기적 명령을 제외환 모든 함수는 비동기적 실행

5) 동기와 Blocking 비교

- 제어권을 넘기지 않으면 비동기 처리가 가능한 환경이어도 비동기 처리 불가능

 

 

 

2. 프로미스

1) 프로미스

- 비동기 처리를 동기적 처리로 변환해주는 객체

2) executor

- Promise 실행 함수, Promise가 만들어질 때 자동으로 실행

- new Promise(executor), execuotor 자리에는 함수만 올 수 있으며 resolve와 reject를 인자로 가짐

- new Promise ((resolve, reject) => {})

- Promise 연산 종료 시기와 상관없이 resolve, reject 중 하나 호출 필요

3) 3가지 상태

- Pending : 대기 상태(초기 상태)

- Fulfilled : 연산 완료

- Rejected : 연산 실패

4) then

- 호출한 Promise가 resolve 되면(Fulfilled상태) then함수 실행

5) catch

- promise안에서 에러가 throw되거나 reject되면 catch 함수 실행

6) 프로미스 반환값

- 항상 프로미스로 감싸져있음

- 비동기 함수의 결과 값도 항상 promise 객체로 resolve됨

 

 

 

3. await/async

1) await

- 비동기 함수 안에서 사용 가능

- 문법이 간결해짐

- promise가 fulfill/rejected가 될 때 까지 함수의 실행을 중단하고 대기(동기적 처리로 변환)

- 함수 실행 전까지 promise를 생성하지 않음

2) async

- awiat은 async 안에서 사용 가능

- 반환값이 promise가 아니면 즉시 반환

 

 

 

4. 객체 리터럴

1) 개요

- 리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법  

- 즉 객체를 생성하기 위한 표기법

2) 특징

- 객체를 생성하기 위해 Class를 선언하고 new 연산자와 함께 생성자를 호출할 필요가 없이 일반적인 숫자, 문자열을 만드는것과 유사하게 생성 가능