what is Promise? 1.비동기 처리
자바스크립트 프로미스
자바스크립트 공부를 시작하고서부터,
이런 강적은 처음보았다.
언뜻알겠는데… 정확히 쓰려고하면 에러가 산더미..
그래서 제대로 처음부터 알아보고자 한다.
그래서 프로미스가 뭔데?
The Promise
object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.
-MDN web docs
번역부터도 살짝 버거운 문장이 튀어나왔다.
Promise 객체는 비동기적 연산의 eventual(슈뢰딩거의 고양이같은) 성공 혹은 실패에 대한 완료와 그 결과값을 의미한다.
비동기가 뭔데?
비동기처리
비동기처리는 자바스크립트의 특성과도 맞닿아 있다.
자바스크립트는 싱글스레드 기반 연산을 한다.
그 의미는 동일한 시간에, 한가지 연산밖에 할 수 없다는 것이다.
그렇다면, setTimeout같은 대기, 혹은 Fetch와 같이 외부의 대기시간에 따라 javascript의 operation시간이 같이 늘어난다는 것을 의미한다.
어떻게 하면 싱글스레드의 귀중한 자원인 ‘시간’을 효율적으로 사용할 수 있을까?
그 대기시간동안, 다른 코드실행을 할 수 있도록 하면 어떨까?
개인적인 추론이지만, 그 결과 만들어낸 개념이 ‘비동기처리’라고 생각한다.
(너는 기다리니? 나는 예약해놓고 밥먹으러간다)
비동기 처리의 단점
그러나 이러한 비동기 처리 방식에는 당연한 단점이 존재한다.
위에서 아래로 코드를 읽어나가는 자바스크립트의 경우,
1.회전목마 대기열을 예약한다
2.밥을 먹는다
3.회전목마를 탄다.
와 같은 코드가 있는 경우,
밥을 먹고 나서,
회전목마의 대기열이 완료가 되었을 것이라는
장담을 할 수 없다는 것이다.
따라서,
회전목마의 대기열이 완료가 되었을 시에만,
회전목마 어트랙션으로 향하도록 알림 기능이 필요하다.
이러한 알림기능 설정을 뭐라고 해야할까… 본인은 발견하지 못했다.
비동기 처리의 처리? (`o`)
다음 글에서는 해당 비동기 처리의 처리 방법을 알아보도록 하자!