프로미스 활용

jeongwon yun·2022년 10월 25일
0

Javascript Core

목록 보기
11/13
function delay(ms) {
	return new Promise((resolve, reject) => {
    	setTimeout(() => {}, ms);
    });
}
async function b() {
	const p1 = delayP(3000);
  	const p2 = delayP(6000);
  	await Promise.allSettled([p1, p2]);
  	await delayP(9000);
}

async 함수 b 를 promise로 바꿔보자!

new Promise((resolve, reject) => {
	const p1 = delayP(3000);
  	const p2 = delayP(6000);
  	return Promise.allSettled([p1, p2]);
})
	.then(() => {
		return delayP(9000);
	});

const results = await Promise.all([p1, p2, p3]);
results.map(async () => {
	await result조작();
}, []);

이것은 조작이 거의 동시에 일어나고
(p1, p2, p3 거의 동시에, 백그라운드에서 동시에 일어나는 것처럼)

const results = await Promise.all([p1, p2, p3]);

for (let result of results) {
	await result조작();
}

이것은 조작이 순서대로 일어난다.
p1 끝나고 p2 끝나고 p3


const x = true;
let y = false;
function a() {
	let a = 4;
  	y = true;
  	if (x) {
    	let a = 3;
      	for (let i = 0; i < a; i ++) {
        	console.log(i, a); // 0, 3	1, 3	2, 3
        }
      	if (!y) {
        	kkk();
        }
    }
}

함수 a 안에 if 문 안에 for 문만 선언 지도를 작성해보자!


let arr = [];
for (let result of results) {
	arr.push(result조작());
}
await Promise.all(arr); // 거의 동시에 처리

위 방식으로 사용하기도 함.

0개의 댓글