Promise 복습일반적인 동기적 처리를 하는 로직을 구현할 때는 하나를 실행하고나서 다음 처리를 한다.
그러나, 비동기처리, 예를 들어, 하나의 처리가 언제 끝날지 모르는 로딩과 같은 처리는 다르다.
유튜브에서 동영상을 로딩한다고 할 때, 로딩하는 동안 아무것도 못한다하면 그것은 동기적 프로그래밍으로 만들어진 것이다.
그러나, 그러한 사이트는 요즘 없다. 방금 예시로 다시 생각해보면,
백그라운드 로딩으로 동영상을 로딩하고, 로딩을 완료하면 동영상을 재생하도록 비동기처리를 해놓고,
다른 버튼을 클릭하면, 그 버튼이 실행되도록 해두어야 한다.
방금 예시를 통해서 설명해보면, 백그라운드 로딩에서 동영상을 먼저 로딩하고, 그 다음에 동영상을 재생하도록 비동기 처리를 할 때 Promise를 쓴다.
비동기처리는 언제 끝날지 모르기 때문에(동영상을 받아와야 다음 단계로 넘어갈 수 있음) 동기적 프로그래밍과 같이 다음줄에 다음 로직을 쓰는 것으로는 부족하다.
반드시 첫번째 동영상 로딩이 끝난 다음에 다음 로직, 즉, 동영상 재생을 처리해야한다.
그러기 위해서, 첫번째 처리에서 Promise 객체를 생성해서 동영상 로딩을 하고, 로딩이 성공하면 resolve에 값을 담아서 다음 로직으로 전달하고,
그 전달받은 곳에서 해당 동영상을 재생하는 로직을 구현해놓으면 된다.
이 때, 동영상 로딩에 실패하면, reject로 처리하고, 마지막에 catch로 에러를 처리해준다(promise 체이닝을 이용하면 에러처리를 마지막에 한번 해줘도 된다)
추가로, 한번에 많은 로직을 전부다 처리하고, 예를 들어, 여러 동영상을 한번에 로딩한 다음에 동시재생하고 싶을 때는 Promise.all을 쓰도록 한다.