[TIL]230125_비동기 Promise

graceΒ·2023λ…„ 1μ›” 25일
0

TIL/WIL

λͺ©λ‘ 보기
25/37
post-thumbnail

πŸ€“ What I Learned Today

❓.λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰ λœλ‹€λŠ” 것이 λ¬΄μ—‡μΌκΉŒ?

ν•˜λ‚˜μ˜ λ™μž‘μ΄ μ™„λ£Œλ˜μ§€ μ•Šμ•„λ„ λ‹€μŒ μ½”λ“œκ°€ μ‹€ν–‰ λœλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

❗️비동기 νŠΉμ„±

μ„œλ²„μ— μš”μ²­μ„ 보내고 κ²°κ³Όκ°€ λŒμ•„μ˜€μ§€ μ•Šμ•„λ„ λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ ν•œλ‹€.

❓.그러면 이게 μ™œ ν•„μš”ν•΄?

μ›Ήμ—μ„œ μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν–ˆμ„λ•Œ μš”μ²­μ΄ μ™„λ£Œλ˜κΈ° μ „κΉŒμ§€λŠ” 아무것도 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ° κ·Έ μ΄μœ λŠ” ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” 데 λ§Žμ€ μ‹œκ°„μ΄ μ†Œμš” 되기 λ•Œλ¬Έμ΄κΈ°λ„ ν•˜λ‹€.

κ·Έλ ‡λ‹€λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό λΉ λ₯΄κ²Œ μ‹€ν–‰ν•΄μ•Όν• κΉŒ? μ‹€ν–‰ μˆœμ„œκ°€ μˆœμ°¨μ μ΄μ•„λ‹ˆλΌ λΉ λ₯΄κ²Œ 뢈러올 수 μžˆλŠ” 것 λΆ€ν„° κ°€μ Έμ˜€λ©΄ μ–΄λ–¨κΉŒ? 예λ₯Ό λ“€λ©΄ μ„œλ²„μ—μ„œ 이미지λ₯Ό κ°€μ Έμ˜¨λ‹€κ³  ν•΄λ³΄μž..

μ΄λ―Έμ§€μ˜ 크기와 λ„€νŠΈμ›Œν¬μ˜ ν™˜κ²½μ— 따라 싀행이 λΆˆκ°€ν•œ κ²½μš°κ°€ λ°œμƒν•  μˆ˜κ°€ μžˆλ‹€. μ΄λ•Œ 비동기 μ²˜λ¦¬κ°€ ν•„μš”ν•œ 것이닀.

fetch ν•¨μˆ˜λŠ” λ¦¬ν€˜μŠ€νŠΈλ₯Ό 보내고 promise 객체λ₯Ό λ¦¬ν„΄ν•˜λ©° κ·Έ 객체의 then λ©”μ†Œλ“œλ‘œ μ½œλ°±μ„ ⭐️등둝이 λœλ‹€. μ½œλ°±μ€ μ„œλ²„λ‘œλΆ€ν„° 리슀폰슀 λ°›μ•˜μ„ λ•Œ μ‹€ν–‰λœλ‹€.

λ˜ν•œ, ν•΄λ‹Ή ν”„λ‘œλ―ΈμŠ€ 객체가 pending μƒνƒœμ—μ„œ fulfilled μƒνƒœκ°€ λ˜μ—ˆμ„λ•Œ μ‹€ν–‰ν•  콜백 등둝할 수 있으며,

λ¦¬μŠ€ν°μŠ€κ°€ μ™€μ„œ ν”„λ‘œλ―ΈμŠ€ 객체가 μ‹€μ œλ‘œ pending μ—μ„œ fulfilled μƒνƒœκ°€ 되면 등둝해둔 콜백이 μ‹€ν–‰λ˜κ³  κ·Έ μž‘μ—… 성곡 κ²°κ³Όκ°€ 콜백의 νŒŒλΌλ―Έν„°λ‘œ λ„˜μ–΄μ˜€κ²Œ λœλ‹€.

console.log('start!);

fetch('')
	.then((response) => response.text()) // β‘  μž‘μ—… 성곡 κ²°κ³Ό
	.then((result) => { console.log(result); });//β‘‘ 첫 번째 콜백이 μ‹€ν–‰λ˜κ³  λ‚˜λ©΄ μ‹€ν–‰ 
	
console.log('End');

μœ„μ˜ μ˜ˆμ‹œμ—μ„œ start β†’ end β†’ then λ©”μ†Œλ“œμ— λ“±λ‘λ˜μ–΄λ‘μ—ˆλ˜ 콜백이 μˆœμ„œλŒ€λ‘œ μ‹€ν–‰

fetch ν•¨μˆ˜λŠ” promise 객체λ₯Ό λ¦¬ν„΄ν•œλ‹€.

μ—¬κΈ°μ„œ promise κ°μ²΄λž€ μ–΄λ–€ μž‘μ—…μ— κ΄€ν•œ β€œμƒνƒœ 정보”λ₯Ό κ°–κ³  μžˆλŠ” 객체이닀.(μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 비동기λ₯Ό κ°„νŽΈν•˜κ²Œ μ²˜λ¦¬ν•  수 있게 λ„μ™€μ£ΌλŠ” object )

Promise κ°μ²΄λŠ” 크게 3κ°€μ§€ 쀑 ν•˜λ‚˜μ˜ μƒνƒœλ₯Ό κ°€μ§„λ‹€.

  1. μž‘μ—…μ΄ μ§„ν–‰ μ€‘μž„μ„ μ˜λ―Έν•˜λŠ” pending μƒνƒœ
  2. μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆμŒμ„ μ˜λ―Έν•˜λŠ” fulifilled μƒνƒœ
  3. μž‘μ—…μ΄ μ‹€νŒ¨ν–ˆμŒμ„ μ˜λ―Έν•˜λŠ” rejected μƒνƒœ

πŸ€”Β κ·Έλ ‡λ‹€λ©΄ fulfilled μƒνƒœμ˜ 객체와 rejected μƒνƒœμ˜ 객체λ₯Ό λ§Œλ“€κ³  μ‹ΆμœΌλ©΄ μ–΄λ–»κ²Œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Όν• κΉŒ?

fulfilled μƒνƒœμ˜ 객체

const x = Promise.resolve('success);

rejected μƒμ±„μ˜ 객체

const x = Promise.reject(new Error('fail'));

πŸš€ Challenges Experienced

λ¦¬μ•‘νŠΈλ₯Ό κ³΅λΆ€ν•˜λ‹€κ°€ μ€‘μš”ν•˜κ²Œ λ‚˜μ˜€λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 비동기에 λŒ€ν•΄ μ’€ 더 μ•Œμ•„λ³΄μ•˜λ‹€. 아직은 잘 와닿지 μ•Šμ€ κ°œλ…μ΄μ§€λ§Œ 예제λ₯Ό 많이 봐야겠닀.

profile
미래의 개발자!

0개의 λŒ“κΈ€