promise 연습

dev.dave·2023년 7월 24일

Javascript

목록 보기
20/167

//콜백 지옥
setTimeout(() => {
console.log("처리중");
setTimeout(() => {
console.log("여전히");
setTimeout(() => {
console.log("곧 완료");
render("렌더링~!");
}, 1000);
}, 2000);
}, 3000);

//
setTimeout(3); // 이부분이 ...끝나야
console.log("처리중");

setTimeout(2); // 이부분이 ...끝나야
console.log("여전히");

setTimeout(1); // 이부분이 ...끝나야
console.log("곧 완료");
render("렌더링~!");

otherLogic(); // 비로소 이게 실행되고
otherLogic2(); // 비로소 이게 실행되고,,, 너무 늦게 즉,동기적이기떄매, 코드가 블락킹 됨.

// 콜백 지옥을 해결하기 위해 Promise 씀

//지켜보기 -> 콜백등록 -> 완료통보 -> 콜백실행

//프로미스 코드 예제>

const render = () => console.log("rendering...");

const timeout = (time) => (resolve, reject) => {
setTimeout(() => resolve("promise :"), time); // 3.resolve는 resolve가 불리면, 완료가 됫다는걸 통보, 표시해줍니다.
};

const delay = (time) => new Promise(timeout(time)); // 1.프로미스는 셋타임아웃 지켜보기

delay(3000)
.then((msg) => {
// 4. 콜백 실행
// 2.then은 콜백을 등록함 왜냐면 셋타임아웃 시간이 되면 이부분을 실행해 줘야기떄매 등록을 해놓음
console.log(msg + "처리중");
return delay(2000);
})
.then((msg) => {
// 4. 콜백 실행
// 2.then은 콜백을 등록함
console.log(msg + "여전히");
return delay(1000);
})
.then((msg) => {
// 4. 콜백 실행
// 2.then은 콜백을 등록함
console.log(msg + "곧완료");
render();
});

profile
🔥개인 메모 / 다른블로그 자료 참조 / 다른블로그 자료 퍼옴 (출처표기) /여기저기서 공부 했던 내용 개인메모 & 참고 / 개인 기록 용도 블로그 입니다.🔥

0개의 댓글