[TIL]230126_๋น„๋™๊ธฐ(async await )

graceยท2023๋…„ 1์›” 26์ผ
0

TIL/WIL

๋ชฉ๋ก ๋ณด๊ธฐ
26/37
post-thumbnail

๐Ÿค“ What I Learned Today

์˜ค๋Š˜์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๋กœ ๋ง‰ํžˆ๋Š” ํ•˜๋ฃจ๋ผ ๊ทธ๋ƒฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐœ๋…์ •๋ฆฌ๋งŒ..!

1.async

์˜ˆ๋ฅผ ๋“ค๋ฉด ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—”๋“œ์—์„œ ๋ฐ›์•„์˜ค๋Š”๋ฐ 10์ดˆ์ •๋„ ๊ฑธ๋ฆฌ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

function fetchUser( ) {
//do network request in 10 secs...

	return 'mememe'	
}
const user = fetchUer();
console.log(user)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—”์ง„์€ ๋™๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— .. ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ๋น„๋™๊ธฐ์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์ „ํ˜€ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฝ”๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž๋Š” 10์ดˆ์ •๋„ ๋นˆํ™”๋ฉด์„ ๋ณด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋งŒ๋“ค๊นŒ?

๋จผ์ €, promise ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

function fetchUser( ) {
//do network request in 10 secs...
return new Promise((resolve,reject)=>{
	resolve('ellie');
});
}
const user = fetchUer();
user.then(console.log)
console.log(user)

์ข€๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ..

async function fetchUser( ) {
//do network request in 10 secs...

	return 'mememe'	
}
const user = fetchUer();
user.then(console.log)
console.log(user)

async ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ํ•จ์ˆ˜์•ž์— ์“ฐ๋ฉด ์ฝ”๋“œ๋ธ”๋ก์ด ์ž๋™์œผ๋กœ promise๋กœ ๋ฐ”๋€๋‹ค.

2.await

function delay(ms) {
	return new Promise(resolve => setTimeout(resolve, ms))
}

async function getApple() {
	await delay(1000);
	return 'apple';
}

async function getApple() {
	await delay(1000);
	return 'banana';
}

function pickFruits() {
	return getApple().then(apple => {
		return getBanana().then(banana => `${apple}+${banana}`);
});
}

pickFruits().then(console.log);

ํ•˜์ง€๋งŒ! ์ด ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์€ ๋„ˆ๋ฌด ์ฒด์ด๋‹ํ•˜๊ณ  ์žˆ์–ด ์ฝœ๋ฐฑ์ง€์˜ฅ์˜ ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผœ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ๊ณ ์ณ๋ณด์žโ€ฆ!

function delay(ms) {
	return new Promise(resolve => setTimeout(resolve, ms))
}

async function getApple() {
	await delay(1000);
	return 'apple';
}

async function getApple() {
	await delay(1000);
	return 'banana';
}

async function pickFruits() {
	try {
		const apple= await getApple();
		const banana= await getBanana();
} catch() {
	..........
}
	return `${apple}+${banana}`;
}

pickFruits().then(console.log);
profile
๋ฏธ๋ž˜์˜ ๊ฐœ๋ฐœ์ž!

0๊ฐœ์˜ ๋Œ“๊ธ€