promise는 자바스크립트에서 비동기를 간편하게 처리해주는 객체입니다
비동기처리는 '특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 것을 말합니다
프로미스는 주로 서버에서 받아온 데이터를 화면에 표시할 때 사용됩니다,
즉,
일반적으로 웹 애플리케이션을 구현할 때 서버에서 데이터를 요청하고 받아오기 위해 API를 사용하는데,
API가 실행되면 서버에다가 데이터 보내달라는 요청을 보내고,
여기서 데이터를 받아오기도 전에 마치 데이터를 다 받아온 것 마냥 화면에 데이터를 표시하려고 하면 오류가 발생하거나 빈 화면이 뜹니다.
이같은 문제를 해결하기 위해 프로미스를 사용합니다
프로미스는 pending, fullfilled, rejected 3가지 상태(states)가 존재하며,
이행을 할 때 resolve()를 실행하면 이행상태가 됩니다
이행 상태가 되면 then을 이용하여 처리 결과 값을 받을 수 있고
실패는 reject()로 실행하여 실패상태가됩니다
callback을 통해서 어떠한 비동기 처리를 했을때 callback 함수를 실행시킴으로써 비동기 작업이완료 되며,
callback에서 작성한 어떠한 행동을 실행할 수 있습니다
callback 함수는 함수의 매개변수인 함수로, 주로 비동기 처리에서 동기 처리를 할 때 callback 패턴을 사용합니다. callback 패턴의 문제점은 callback 함수의 중첩이 많아질수록 가독성이 심하게 나빠집니다.
callback을 사용하면 비동기 로직의 결과값을 처리하기 위해서는 callback안에서만 처리를 해야하고, 콜백 밖에서는 비동기에서 온 값을 알 수가 없습니다. 하지만 promise를 사용하면 비동기에에서 온 값이 promise 객체에 저장되기 때문에 코드 작성이 용이해집니다.
또,
Promise 클래스는 비동기 처리만을 위해 만들어졌기 때문에 클래스에 resolve나 reject 함수들이 잘 정의되어 있고 이를 잘 활용하기만 하면 되지만, callback pattern은 자유도가 높지만 template이 존재하지 않기 때문에 코드가 복잡해지고 에러 처리 같은 작업들이 어렵습니다.
추가적으로 비동기 처리를 위해 최근에 나온 async & await 문법이 있으며,
존의 비동기 처리 방식인 콜백 함수와 프로미스의 단점을 보완하고 개발자가 읽기 좋은 코드를 작성할 수 있게 도와줍니다
Promise는 아무래도 클래스이다 보니 함수형 컴포넌트가 대세가 된 지금은 함수에 바로 적용 가능한 async-await가 문법적으로 더 잘 맞고 async-awiat가 비동기 코드를 동기 형태로 만들어 가독성을 더 높이는 것에 큰 차이가 있다
HTTP는 Hyper Text Transfer Protocol의 약자로,
HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있습니다
HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜입니다
HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있습니다
HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있습니다,
하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느립니다
개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용을 추천하고,
노출이 되어도 괜찮은 단순한 정보 조회 등을 처리하고 있다면 HTTP를 이용추천 합니다.