Promise.all, Promise.race

jini.choi·2022년 5월 17일
0

Promise.all

  • 한번에 추출(거북이가 3초로 제일 늦으니, 3초 뒤에 세개가 같이 나옴)
  • 셋 중 하나라도 에러가 발생하게 되면 전체 promise가 에러난 것이라고 간주
function sleep(ms){
	return new Promise(resolve => setTimeout(resolve, ms));
}

const getDog = async () => {
	await sleep(1000);
	return '멍이';
}

const getRabbit = async () => {
	await sleep(500);
	return '토끼';
}

const getTurtle = async () => {
	await sleep(3000);
	return '거북이';
}

async function process(){
	const [dog, rabbit, turtle] = await Promise.all([getDog(), getRabbit(), getTurtle()]);
	console.log(dog);
	console.log(rabbit);
	console.log(turtle);
}

process();

Promise.race

  • 가장 빨리 끝난거 하나만 나타나게 된다 ex) 토끼
  • 가장 빨리 끝난 것이 에러일 때만 에러로 간주하고, rabbit은 성공하고 turtle이 실패 했을 땐 에러로 간주 안한다.
function sleep(ms){
	return new Promise(resolve => setTimeout(resolve, ms));
}

const getDog = async () => {
	await sleep(1000);
	return '멍이';
}

const getRabbit = async () => {
	await sleep(500);
	return '토끼';
}

const getTurtle = async () => {
	await sleep(3000);
	return '거북이';
}

async function process() {
	const first = await Promise.race([getDog(), getRabbit(), getTurtle()]);
	console.log(first);
}

process();

이 글은 패스트캠퍼스 '프론트엔드(React)올인원패키지Online'을 수강하며 정리한 노트입니다.
https://fastcampus.co.kr/search?keyword=%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C

profile
개발짜🏃‍♀️

0개의 댓글