오랜만에 작성하는 티스토리,,
일하느라 바쁜 직장인.. 일하다가 비동기 문제때문에 골머리를 앓았다.
평소에 Java만 공부한 터라 JS에 대해선 지식이 얉은 편.
우선 Promise에 대해 설명하기 전에
스레드란? 작업을 처리하는 일꾼이라고 보면 된다.
한마디로 프로그램이 실행되는 동안 작업을 수행하는 역할이랄까?
컴퓨터에서 동영상을 보면서 동시에 문서작업이 가능한 이유는 뭘까.
여러 스레드가 각 작업을 처리해주기 때문에 가능한 일이다.
BUT, JavaScript는 '단일스레드'를 가지고 있다.
그러면 스레드 하나가 모든일을 다하기엔 너무 비효율적이지 않나?
그래서 사용하는게 바로 Web API
JS가 WebAPI에게 일을 넘겨주고 바로 다음 작업으로 넘어간다.
Web API의 일이 끝나면 그때 결과를 받아서 순차적으로 처리하게 된다.
JS가 Web API를 활용한 비동기 처리 방식은 일일알바를 데려다 쓰는 격이다.
이 알바를 관리하는 방식이 바로
Promise
비동기 작업을 더 잘 관리하도록 관리하는 도구다.
Promise를 사용하면 이 일이 언제 끝날지는 모르겠지만 끝나면 결과를 받을 수 있게 약속을 정할 수 있다.
ex) 카페
손님이 주문을 접수한다(약속)
점원1이 주문된걸 확인하고 다른 점원이 음료가 제조할때까지 다른일을 할 수 있게 된다.
(약속이 없으면 주문된걸 확인하고 해당 음료를 만들어야 하기 때문에 다른일은 하지 못함)
Promise가 문제가 생기면 알려주는 상태를 외우기 쉽게 정리하자면,
1. Pending: 음료가 아직 준비되지 않은 상태
2. Fulfilled: 음료가 성공적으로 준비된 상태
3. Rejected: 음료를 못만드는 상태
참고: https://velog.io/@jiyunk/JS-자바스크립트가-비동기를-처리하는-방법을-쉽게-이해해보자
'JavaScript > Information' 카테고리의 다른 글
DOM(Document Object Model)이란? (1) | 2024.06.10 |
---|---|
JQuery란 무엇일까? 개념 및 사용하는 방법 (0) | 2024.05.10 |
[JavaScript] var, let, const의 차이점은? (0) | 2024.01.25 |
[JavaScript] 정규표현식이란? 개념 정리 및 메타문자와 차이점 + 정규식 플래그 (43) | 2023.09.18 |
Node.js 노드의 개념 및 장점? (0) | 2023.04.27 |