Promise는 말 그대로 약속한다는 개념의 객체로, 사용자가 비동기 처리를 반드시 해야하는 상황이 올때 logic의 순차적인 실행을 보장(=약속)받기 위해 사용하는 가장 대표적인 비동기처리 함수이다.
비동기 처리 결과에 따라 대기 / 이행 / 실패 상태로 나뉘고,
Promise 객체는 이에 따라 비동기처리 결과반환(resolve) / 처리실패(reject) 의 결과를 반환한다.
resolve를 받아 data를 받아오거나, reject를 받아 예외(error)처리를 통해 logic을 재구성할 수 있게 된다.
Promise 객체들이 모두 실행완료될 때까지 대기
"use strict";
//promiseall
//내부 promise들이 모두 완료될때까지 대기
const promise1 = new Promise((resolve, reject) => resolve("즉시 호출"));
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("3초뒤 호출");
}, 3000);
});
Promise.all([promise1, promise2]).then((values) => console.log(values));
결과 : promise 변수 모두 출력(객체처럼 출력됨)
[ '즉시 호출', '3초뒤 호출' ]
Promise 객체들 중 하나라도 실행이 완료되면 즉시 종료
"use strict";
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => resolve("1초뒤 호출"), 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => resolve("2초뒤 호출"), 2000);
});
Promise.race([promise1, promise2]).then((value) => console.log(value));
결과 : 가장 빨리 실행되는 promise 변수 출력(문자열 출력)
1초뒤 호출
https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
Not Sugar Syntax, but Sugar logic!