TIL * 22.02.12

RIHOΒ·2022λ…„ 2μ›” 12일
0

TIL

λͺ©λ‘ 보기
8/13
post-thumbnail
post-custom-banner

πŸ”Ά JS

ν”„λ‘œν† νƒ€μž…(Prototype)

μ›ν˜•μ΄λΌλŠ” 사전적 μ˜λ―Έμ™€ 같은 κ°œλ…μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλ„ μ‚¬μš©λ˜λŠ”λ°, μ‰½κ²Œ 말해 객체의 ν”„λ‘œν† νƒ€μž…(μ›ν˜•)을 가지고 μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•΄κ°€λŠ” ν”„λ‘œκ·Έλž˜λ° 방식.
μƒμ„±λœ κ°μ²΄λŠ” 자기 μžμ‹ μ˜ ν”„λ‘œν† νƒ€μž…μ„ 가지며 즉 자기 μžμ‹ μ΄ λ§Œλ“€μ–΄μ§€κ²Œ 된 μ›ν˜•μ„ μ•ˆλ‹€.

Promise

비동기 μž‘μ—…μ΄ λ§žμ΄ν•  미래의 μ™„λ£Œ λ˜λŠ” μ‹€νŒ¨μ™€ κ·Έ 결과값을 λ‚˜νƒ€λƒ„. μ œμž‘ μ½”λ“œμ™€ μ†ŒλΉ„ μ½”λ“œλ₯Ό μ—°κ²°ν•΄ μ£ΌλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 객체이며, μ‹œκ°„μ΄ μ–Όλ§ˆλ‚˜ 걸리든 상관없이 μ•½μ†ν•œ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄ λ‚΄λŠ” μ œμž‘ μ½”λ“œκ°€ μ€€λΉ„λ˜μ—ˆμ„ λ•Œ λͺ¨λ“  μ†ŒλΉ„ μ½”λ“œκ°€ κ²°κ³Όλ₯Ό μ‚¬μš©ν•  수 μžˆκ²Œλ” ν•΄ μ€€λ‹€.

let promise = new Promise(function(resolve, reject) {
 // executor(μ œμž‘ μ½”λ“œ) : new Promiseκ°€ λ§Œλ“€μ–΄μ§ˆ λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰. κ²°κ³Όλ₯Ό μ΅œμ’…μ μœΌλ‘œ λ§Œλ“€μ–΄λ‚΄λŠ” μ œμž‘ μ½”λ“œ 포함
 // resolve(value) : 일이 μ„±κ³΅μ μœΌλ‘œ λλ‚œ 경우 κ·Έ κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚΄λŠ” value와 ν•¨κ»˜ 호좜
 // reject(error) : μ—λŸ¬ λ°œμƒ μ‹œ μ—λŸ¬ 객체λ₯Ό λ‚˜νƒ€λ‚΄λŠ” error와 ν•¨κ»˜ 호좜
});

PromiseλŠ” λ‹€μŒ 쀑 ν•˜λ‚˜μ˜ μƒνƒœλ₯Ό 가진닀.

  • λŒ€κΈ°: μ΄ν–‰ν•˜μ§€λ„, κ±°λΆ€ν•˜μ§€λ„ μ•Šμ€ 초기 μƒνƒœ
  • 이행: μ—°μ‚° μ™„λ£Œ
  • κ±°λΆ€: μ—°μ‚° μ‹€νŒ¨

μ†ŒλΉ„ ν•¨μˆ˜

  • .then : Promiseκ°€ μ΄ν–‰λ˜μ—ˆμ„ λ•Œ / κ±°λΆ€λ˜μ—ˆμ„ λ•Œ μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜. 이λ₯Ό μ΄μš©ν•˜μ—¬ ν”„λ‘œλ―ΈμŠ€ 체이닝이 κ°€λŠ₯.
  • catch : Promiseμ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•˜μ˜€μ„ 경우λ₯Ό λ‹€λ£¨λŠ” μ†ŒλΉ„μž
  • finally : Promiseκ°€ 처리(이행 및 κ±°λΆ€)되면 항상 싀행됨. κ²°κ³Όκ°€ μ–΄λ–»λ“  λ§ˆλ¬΄λ¦¬κ°€ ν•„μš”ν•˜λ©΄ finallyλ₯Ό μ‚¬μš©.

async / await

  • function μ•žμ— asyncλ₯Ό 뢙이면 ν•΄λ‹Ή ν•¨μˆ˜λŠ” 항상 Promiseλ₯Ό λ°˜ν™˜ν•œλ‹€.
  • await ν‚€μ›Œλ“œλŠ”, Promiseκ°€ 처리될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ Έλ‹€κ°€ κ·Έ 이후에 λ°˜ν™˜λ˜λŠ” μ„±μ§ˆμ„ 가진닀. μ²˜λ¦¬κ°€ μ™„λ£Œλ˜λ©΄ λ‹€μŒκ³Ό 같은 λ™μž‘μ΄ 이어진닀.
    1. μ—λŸ¬ λ°œμƒ μ‹œ - μ˜ˆμ™Έ 생성
    2. μ—λŸ¬ λ―Έλ°œμƒ μ‹œ - Promise 객체의 result κ°’ λ°˜ν™˜

μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜

μ—¬λŸ¬ 개의 값을 ν•„μš”μ— 따라 ν•˜λ‚˜μ”© λ°˜ν™˜(yield)ν•  수 μžˆλŠ” ν•¨μˆ˜. 일반 ν•¨μˆ˜μ™€ λ™μž‘ 방식이 λ‹€λ₯Έλ°, μ œλ„ˆλ ˆμ΄ν„° ν•¨μˆ˜λŠ” ν˜ΈμΆœλ˜μ–΄λ„ μ¦‰μ‹œ μ‹€ν–‰λ˜μ§€ μ•Šκ³ , λŒ€μ‹  ν•¨μˆ˜λ₯Ό μœ„ν•œ Iterator 객체가 λ°˜ν™˜λœλ‹€.
Iterator의 next() λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ Generator ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ–΄ κ°€μž₯ κ°€κΉŒμš΄ yield문을 λ§Œλ‚  λ•ŒκΉŒμ§€ μ§„ν–‰ν•˜κ³ , ν•΄λ‹Ή ν‘œν˜„μ‹μ΄ λͺ…μ‹œν•˜λŠ” Iteratorλ‘œλΆ€ν„°μ˜ λ°˜ν™˜κ°’μ„ λ°˜ν™˜ν•œλ‹€.

이후 next() λ©”μ„œλ“œκ°€ 호좜되면 진행이 λ©ˆμ·„λ˜ μœ„μΉ˜μ—μ„œλΆ€ν„° μž¬μ‹€ν–‰λœλ‹€. next()/yield ν˜ΈμΆœμ„ μ‚¬μš©ν•˜λ©΄ μ™ΈλΆ€ μ½”λ“œμ™€ μ œλ„ˆλ ˆμ΄ν„° 간에 κ²°κ³Όλ₯Ό κ΅ν™˜ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€.

function* generateSequence() {
  yield 1;
  yield 2;
  return 3;
}

let generator = generateSequence();

let one = generator.next();

alert(JSON.stringify(one)); // {value: 1, done: false}


μ°Έκ³ :


πŸ”· CSS

@keyframe : μ• λ‹ˆλ©”μ΄μ…˜μ˜ νŠΉμ • 지점을 κ±°μΉ  수 μžˆλŠ” ν‚€ν”„λ ˆμž„μ„ μ„€μ •. λ”°λΌμ„œ CSS μ• λ‹ˆλ©”μ΄μ…˜ κ³Όμ •μ˜ 쀑간 절차λ₯Ό μ œμ–΄ν•  수 있음.

profile
Front-End / 기둝용
post-custom-banner

0개의 λŒ“κΈ€