본문 바로가기

자바스크립트-스터디[2021-10-05~완료]

45장 프로미스

45.1 비동기 처리를 위한 콜백 패턴의 단점
      1. 콜백 헬
      2. 에러 처리 한계
45.2 프로미스 생성
45.3 프로미스 후속 처리 메서드
      1. then
      2. catch
      3. finally
45.4 프로미스의 에러처리
45.5 프로미스 체이닝
45.6 프로미스의 정적 메서드
      1. resolve, reject
      2. all
      3. race
4. allSettled
45.7 마이크로 태스트 큐
45.8 fetch
      1. get 요청
      2. post 요청
      3. patch 요청
      4. delete 요청

 

 

 

45.1 비동기 처리를 위한 콜백 패턴의 단점

   1. 콜백 헬

1) 콜백함수 내부에 비동기 함수가 있으면 순서가 보장되지 않는다. -> 기대대로 순서가 동작되지 않는다.

1-1) 웹 브라우저 원리

순서 보장 안함

 

 

1-2) javascript를 순차적으로 실행하려면?

이때 콜백함수를 사용하면 순차적으로 실행할 수 있다.

 

비동기 함수가 왜 인수로 함수를 전달하는지 알겠지? 다음 작업을 연결하기 위함이야.

 

 

1-3) 콜백함수를 이용한 함수 디자인

2) 외부 변수에 값을 저장할 수 없다.  == 상위 스코프 변수에 서버의 응답 결과를 반환해서 할당하기 어렵다.

-> 비동기 함수는 동기함수가 끝나면 시작하기 때문이다.

즉, 비동기 함수의 결과를 외부에 반환할 수 없다. 상위 스코프의 변수에 할당할수 없다. 

 

 

 

3) 성공시, 실패시 각각의 함수를 실행시키고 싶지만 함수 호출이 중첩되어 복잡해진다.

 

 

콜백헬 복잡하다

   2. 에러 처리 한계

에러처리가 안된다.

45.2 프로미스 생성

 

콜백함수보다 더 쉽게 쓰기 위해 나온 것이 프로미스

function안에 function이 있는것보다 then이 낫잖아

1) 프로미스는 객체다

전달해주는 인자가 성공과 실패로 구분해서 쓴다

 

 

 

2) 프로미스 상태

 2-1) pending

 2-2) settled

 

45.3 프로미스 후속 처리 메서드

promise 객체를 3가지로 처리한다.

   1. then : 성공시

   2. catch : 에러 발생시

   3. finally : 공통으로

45.4 프로미스의 에러처리

45.5 프로미스 체이닝

함수 안에 다음 실행할 함수를 전달해줌

프로미스를 사용하면 콜백헬이 발생 안한다.

45.6 프로미스의 정적 메서드

   1. resolve, reject

resoleve

 

rejected

   2. all

안 좋은 예) 비동기를 순차적으로 처리

promise.all 을 이용해 병렬 처리 => 시간 아낄 수 있음, 처리순서가 보장된다. (배열로 순서대로 값을 담음)

   3. race : 경쟁.. 빠른 한놈만

   4. allSettled : 전달 받은 인수를 다 처리하면 완료함

45.7 마이크로 태스트 큐

45.8 fetch

 

   1. get 요청

   2. post 요청

   3. patch 요청

   4. delete 요청

'자바스크립트-스터디[2021-10-05~완료]' 카테고리의 다른 글

41장 타이머  (0) 2022.02.19
39.6 DOM 조작  (0) 2022.02.13
38장 브라우저의 렌더링 과정  (0) 2022.02.04
39장 DOM  (0) 2022.02.04
33장 Symbol  (0) 2022.01.21