코딩/TIL

TIL #210120

나동 2021. 1. 20. 23:25

📚 TIL


코드숨 1주차 DAY 3, 모던 JavaScript 튜토리얼

🧪 1번 과제 수행하기

변수를 재할당하지 마라... 그렇다면 재할당할 수 없도록 선언하라는 것인가?

let 대신 const를 이용해서 배열로 선언했습니다 과제의 결과는 내일 알 수 있겠죠..

아닌 것 같은데... 여쭤볼 분이 없네요 ㅠㅠ 과제를 더 잘 해결하기 위해 지금은 이론공부를 해야겠어요

이대로라면 매일 과제를 제출해도 일요일까지 참잘했어요 도장을 못받을 것 같아요ㅠㅠㅠ아나

 

 

 

 


 

 

 

 

파트 1 - 코어 자바스크립트

🧪 프라미스와 async, await

콜백

 

- 함수의 두 번째 인수로 스크립트 로딩이 끝난 후 실행될 함수인 콜백(callback) 함수를 추가하면

두 번째 인수로 전달된 함수는 원하는 동작이 완료되었을 때 실행

 

프라미스

 

- promise 객체 : executor와 결과나 에러를 받을 소비 함수를 이어주는 역할

 

let promise = new Promise(function(resolve, reject) {
  // executor (실행자, 실행 함수)
});

- executor : 자동으로 실행되고 처리가 끝나면 executor는 처리 성공 여부에 따라 resolve나 reject를 호출

 

  • resolve(value) : 일이 성공적으로 끝난 경우, 그 결과를 나타내는 value와 함께 호출
  • reject(error) : 에러 발생 시 에러 객체를 나타내는 error와 함께 호출

- new Promise 생성자가 반환하는 promise 객체는 다음과 같은 내부 프로퍼티를 가짐

 

  • state : 처음엔 "pending"(보류)이었다 resolve가 호출되면 "fulfilled", reject가 호출되면 "rejected"로 변함
  • result : 처음엔 undefined이었다 resolve(value)가 호출되면 value, reject(error)가 호출되면 error로 변함

- 소비함수 : .then, .catch, .finally 메서드를 사용해 등록

 

프라미스 체이닝

 

- 순차적으로 처리해야 하는 비동기 작업이 여러 개 있을 때 이용

- .then 또는 catch/finally 핸들러(어떤 경우도 상관없음)가 프라미스를 반환하면

나머지 체인은 프라미스가 처리될 때까지 대기

- 처리가 완료되면 프라미스의 result(값 또는 에러)가 다음 체인으로 전달

 

 

프라미스와 에러 핸들링

 

- reject()가 호출되거나 에러가 던져지면 .catch에서 이를 처리

- 핸들러에선 에러를 분석하고 알 수 없는 에러는 다시 던질 수 있음

 

프라미스 API

 

Promise 클래스의 5가지 정적 메서드

  • Promise.all(promises) – 모든 프라미스가 이행될 때까지 기다렸다가 그 결괏값을 담은 배열을 반환
  • Promise.allSettled(promises) – 모든 프라미스가 처리될 때까지 기다렸다가 그 결과(객체)를 담은 배열을 반환
  • Promise.race(promises) – 가장 먼저 처리된 프라미스의 결과 또는 에러를 담은 프라미스를 반환
  • Promise.resolve(value) – 주어진 값을 사용해 이행 상태의 프라미스를 만듦
  • Promise.reject(error) – 주어진 에러를 사용해 거부 상태의 프라미스를 만듦

프라미스화

 

프라미스화(promisification) : 콜백을 받는 함수를 프라미스를 반환하는 함수로 바꾸는 것

 

마이크로태스크

 

- 프라미스 핸들링은 항상 비동기로 처리

- 따라서 .then/catch/finally 핸들러는 항상 현재 코드가 종료되고 난 후에 호출

- 어떤 코드 조각을 .then/catch/finally가 호출된 이후에 실행하고 싶다면

.then을 체인에 추가하고 이 안에 코드 조각을 넣으면 됨

 

async와 await

 

- async

 

async function f() {
  return 1;
}

function 앞에 async를 붙이면 해당 함수는 항상 프라미스를 반환

 

- await

 

let value = await promise;

자바스크립트는 await 키워드를 만나면 프라미스가 처리(settled)될 때까지 기다림

결과는 그 이후 반환

await는 async 함수 안에서만 동작

 


 

😁 오늘 한 일


 

📕 공부하기

- 오늘은 코드숨 과제를 하고 모던 자바스크립트 튜토리얼을 공부했어요

- 깃 다루는것부터 말썽이었네요 ㅠ 어렵습니다

- 생각해보니 아직 자바스크립트 공부를 시작한 지 한달도 안되었더라고요

- 왜이렇게 모르겠지 했는데 그냥 모를 수 밖에 없었어요 ㅎ..파이팅

 

🥧 친구들과 맛있는 것 먹기

- 오늘 친구들이랑 스터디카페에서 공부하고 친구네 집에서 맛있는 요리를 먹었어요

- 이마트에서 장보고 와서 만들었어요!! 물론 저는 보조로 ㅋㅋ

- 대학원 다니느라 요새 거의 못본 친구도 오랜만에 만났어요

- 여섯시까지 놀다가 잤어요..다음날 12시에 일어났어요 ㅎㅎ

 

진수성찬

'코딩 > TIL' 카테고리의 다른 글

TIL #210122  (0) 2021.01.22
TIL #210121  (0) 2021.01.21
TIL #210119  (0) 2021.01.19
TIL #210118  (0) 2021.01.18
TIL #210117  (0) 2021.01.17