대왕판다
ESTP 하고재비로 살아가기
대왕판다
전체 방문자
오늘
어제
  • 분류 전체보기
    • 일상
      • 먹고재비
      • 생각대로
    • 개발
      • html css
      • 자바
      • 자바스크립트
      • 파이썬
      • 알고리즘
      • 북TIL
      • 네트워크
      • 객체지향개발

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 클론코딩
  • 알고리즘
  • 자바스크립트
  • 타입스크립트
  • 리액트
  • 마이바티스
  • 백준
  • 양산맛집
  • css
  • 양산
  • 맛집
  • 코딩
  • 자바
  • 챌린지
  • 노개북
  • 브루트포스
  • 파이썬
  • 노마드코더
  • 상길북
  • html

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
대왕판다

ESTP 하고재비로 살아가기

개발/자바스크립트

자바스크립트의 비동기 처리

2022. 7. 12. 22:36

> 비동기처리란

  • 특정 코드 연산이 끝날 때까지 기다리는 것이 아니라, 멈추지 않고 다음 코드를 실행하는 특성
  • 서버에서 응답을 언제 줄 지 모르기 때문에 다양한 요청을 비동기로 처리

 

> 문제점

  • 비동기 처리 방식은 효율적이지만 때로 문제를 일으킴

    • API에서 응답을 받고 처리해준다던지
    • 페이지가 완전히 로드되기 전에 응답을 받아와 빈 값을 리턴하는 경우가 있었음

 

> 해결방법

  1. 콜백함수 사용

    • 그러나 콜백함수는 중첩될 경우 가독성이 떨어지고 로직 변경도 어려움

    • /// 예시
      $.get('url', function(response)) {
            parseValue(response, function(id) {
          	auth(id, function(result) {
                  display(result, function(text) {
                      console.log(text)\;
                  });
              });
      	});
      });
      
  2. Promise 사용

  3. Async 사용

위 콜백 중첩을 분리하더라도 2, 3번 방법이 낫다.

 

> Promise란?

  • Promise 객체는 비동기 작업이 맞이할 미래의 결과 값의 대리자
  • 동기 메서드처럼 값을 반환
  • 최종 결과를 반환하는 것은 아님
  • 이행 또는 거부됐을 경우 setteld(처리)되었다고 표현

 

> Promise의 3가지 상태

  1. Pending

    • new Promise(function(resolve, reject){}); 메서드를 호출한 상태
  2. Fulfilled

    • 펜딩 상태에서 콜백함수의 resolve를 실행하게 되면 이행 상태가 된다.
    • 이때 getSomething().then(function(){});과 같이 then()을 이용해 값을 받을 수 있게 된다.
  3. Rejected

    • reject를 받게 되면 실패 상태가 되며 getSomething().then().catch(function(err){}); 에러를 인자로 받을 수 있다.
    • catch()가 아닌 then()의 두번째 인자로 에러를 처리해도 되지만 에러를 못잡는 경우와 가독성을 위해 가급적 catch()로 처리해주자.

참고- mdn, 캡틴판교님 블로그

'개발 > 자바스크립트' 카테고리의 다른 글

[타입스크립트] CRA를 활용하지 않은 TS프로젝트 생성  (0) 2022.08.26
[타입스크립트] Call Signatures  (0) 2022.08.09
null undefined의 차이  (0) 2022.05.16
AWS 배포 중 이미지, 비디오 리소스를 받아오지 못하는 경우  (0) 2022.04.14
[NextJS] Fast refresh가 작동하지 않을 때 (React 18)  (0) 2022.03.26
    '개발/자바스크립트' 카테고리의 다른 글
    • [타입스크립트] CRA를 활용하지 않은 TS프로젝트 생성
    • [타입스크립트] Call Signatures
    • null undefined의 차이
    • AWS 배포 중 이미지, 비디오 리소스를 받아오지 못하는 경우
    대왕판다
    대왕판다
    let's learn and roll!

    티스토리툴바