동기(synchronously)와 비동기(asynchronously)
blocking 요청에 대한 결과가 동시에 일어난다. 한 줄 씩 읽고 시작지점과 끝 지점이 같다.
non-blocking. 요청에 대한 결과가 동시에 일어나지 않는다.
자바스크립트에서 제공하며 비동기를 간편하게 처리할 수 있게 도와준다.
promise를 실행하면 객체가 생성되고 객체의 키로는 3가지 상태값 pending, fulfilled, rejected가 있고, 값으로는 resolve라면 그 value가 담기고 reject라면 에러메세지가 출력된다.
.then : promise의 상태가 fulfilled일 때 실행된다.promise는 .then을 만나는 순간 비동기가 된다.
promise의 상태를 fulfilled로 변경하고 promise의 결과값을 resolve의 결과(인자)로 넘겨준다.
promise의 상태를 reject로 변경하고 오류를 내뿜는다.
promise의 상태가 reject일 때 실행된다.
await함수 뒤에 promise를 쓰면 promise를 리턴하지 않고 바로 결과를 리턴한다.
fulfilled상태가 되야 한다.
콜백함수로 비동기를 제어할 수 있다.
callback이 까다롭다보니 promise를 사용해 쉽고 빠르게 비동기 함수를 처리할 수 있고, promise도 promise hell에 빠질 수 있으므로 promise chaning을 적절히 사용하면 막을 수 있었다.
async/await을 사용해 promise를 조금 더 일반함수처럼 쓸 수 있게 된다.