[ES6+] Promises
in JavaScript
프로미스를 시작하기 전에 자바스크립트의 비동기성과 동기성에 대해 생각해볼 필요가 있다
프로미스는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과값을 나타낸다
그래서 Promise를 만들때는 실행할 수 있는 function을 만들어야한다
그래서 예시를 보자
const croffle = new Promise((resolve, reject) => {});
console.log(croffle);
//Promise{<pending>}
pending이라고만 뜨고 완료되지 않은 상태로 나온다.
자바스크립트는 그대로 있고 완료될때까지 기다리고 있는거다.
그럼 어떻게 완료해줄 수 있을까?
resolve function을 실행하는것이다
const croffle = new Promise((resolve, reject) => {
setTimeout(resolve, 3000, "i want!");
});
console.log(croffle);
setInterval(console.log,1000, croffle);
//pending
//pending
//pending
//resolved : "i want!"
//resolved : "i want!"
//resolved : "i want!"
//resolved : "i want!"
// ... 1초마다 영원히 일어날것
그래서…
Promise의 핵심은!
내가 아직 모르는 value와 함께 작업할 수 있도록 해준다는 것이다!
(지금 쓰면서도 정리안되는중..)
그러니까,
이 자바스크립트가 에러가 날지, 잘 실행될지는 모르겠지만 어쨌거나 실행이 끝나면 나한테 다시 알려줘,
라는 뜻이라고 생각하면 된다
노마드코더의 ‘ES6의 정석’을 듣고 정리 =)