πŸ“•[μ±…] 쏙쏙 λ“€μ–΄μ˜€λŠ” ν•¨μˆ˜ν˜• μ½”λ”© - 37,38

rivolt0421Β·2023λ…„ 5μ›” 2일
1

πŸ“•μ±…

λͺ©λ‘ 보기
21/26

420p ~ 440p

μš”μ•½

νƒ€μž„λΌμΈ 보기

  • νƒ€μž„λΌμΈμ„ λ‚˜λž€νžˆ 놓고 보면, κ°€λŠ₯ν•œ μ‹€ν–‰ μˆœμ„œλ“€μ˜ μ‘°ν•©μ—μ„œ 버그λ₯Ό μ°Ύμ•„λ‚Ό 수 μžˆλ‹€.

μžμ›μ„ κ³΅μœ ν•˜λŠ” νƒ€μž„λΌμΈ

  • νƒ€μž„λΌμΈμ΄ λ‹€λ₯Έ νƒ€μž„λΌμΈκ³Ό μžμ›μ„ κ³΅μœ ν•œλ‹€λ©΄, κ·Έ μžμ›μ„ μ‚¬μš©ν•˜λŠ” λ‹¨κ³„λΌλ¦¬μ˜ μˆœμ„œκ°€ μ€‘μš”ν•˜λ‹€.
  • μ „μ—­ λ³€μˆ˜λ₯Ό κ³΅μœ ν•˜λŠ” 뢀뢄을 ν™•μΈν•˜κ³  μ΅œλŒ€ν•œ μ—†μ• μž.
    1. 지역 λ³€μˆ˜λ‘œ λ°”κΎΈκ±°λ‚˜
    2. 암묡적 인자λ₯Ό μ—†μ• κ³  ν•¨μˆ˜μ— 인자λ₯Ό μΆ”κ°€ν•œλ‹€
  • μ μ„ μœΌλ‘œ 인해 항상 같은 μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 것이 보μž₯되면, μ „μ—­ λ³€μˆ˜λ₯Ό ν†΅ν•œ μžμ› 곡유λ₯Ό 버그없이 ν™œμš©ν•  수 μžˆλ‹€.
  • 보μž₯λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μ—¬μ „νžˆ 버그가 μžˆμ„ ν™•λ₯ μ΄ λ†’λ‹€.

비동기 ν˜ΈμΆœμ—μ„œμ˜ λͺ…μ‹œμ μΈ 좜λ ₯

  • 비동기 호좜의 결과값은, 비동기 호좜 자체의 '리턴값'μœΌλ‘œλŠ” 얻을 수 μ—†λ‹€.
  • 비동기 ν˜ΈμΆœμ€ λ°”λ‘œ 리턴이 λ˜μ§€λ§Œ, μ‹€μ§ˆμ μΈ 결과값은 콜백이 ν˜ΈμΆœλ˜μ–΄μ•Ό 얻을 수 있기 λ•Œλ¬Έμ΄λ‹€.
  • κ·Έλž˜μ„œ, μ›λž˜ 결과값을 가지고 ν•˜λ €λ˜ μ•‘μ…˜μ„ 비동기 호좜의 콜백으둜 μ „λ‹¬ν•˜λ©΄ λœλ‹€.
  • μ΄λ ‡κ²Œ ν•˜λ©΄, μ‹€μ œλ‘œ ν•¨μˆ˜μ˜ 리턴값을 λͺ…μ‹œμ μœΌλ‘œ λ°›μ•„ μ•‘μ…˜μ„ ν˜ΈμΆœν•˜λŠ” 것과 같은 효과λ₯Ό λ‚΄λ―€λ‘œ, λͺ…μ‹œμ μΈ 좜λ ₯을 λ§Œλ“€ 수 있게 λœλ‹€.
  • λ”λΆˆμ–΄ ν•¨μˆ˜ 본문을 콜백으둜 λ°”κΎΈλŠ” 일이기 λ•Œλ¬Έμ—, "ν•¨μˆ˜ λ³Έλ¬Έ 콜백으둜 λ°”κΎΈκΈ°" λ¦¬νŒ©ν„°λ§μ„ ν•˜λŠ” νš¨κ³Όλ„ 얻을 수 μžˆλ‹€.
/// Original

function calc_cart_total(cart) {
  var total = 0;
  cost_ajax(cart, function(cost) {
    total += cost;
    shipping_ajax(cart, function(shipping) {
      total += shipping;
      update_total_dom(total);	// here
    });
  });
}

function add_item_to_cart(name, price, quant) {
  cart = add_item(cart, name, price, quant);
  calc_cart_total(cart);
}

/// With extracted callback

function calc_cart_total(cart, callback) {
  var total = 0;
  cost_ajax(cart, function(cost) {
    total += cost;
    shipping_ajax(cart, function(shipping) {
      total += shipping;
      callback(total);	// here
    });
  });
}

function add_item_to_cart(name, price, quant) {
  cart = add_item(cart, name, price, quant);
  calc_cart_total(cart, update_total_dom);
}

발췌

λ©”λͺ¨

profile
I think I think too much.

0개의 λŒ“κΈ€