1. ํ”„๋กœ๋ฏธ์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ '์ƒํƒœ'๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ํฌํ•จํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

์ƒ์„ฑ๋œ ์งํ›„์˜ ํ”„๋กœ๋ฏธ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ pending ์ƒํƒœ์ด๋‹ค. ์ดํ›„ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฉด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ”„๋กœ๋ฏธ์Šค์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

์„ฑ๊ณตโ†’ resolve ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ํ”„๋กœ๋ฏธ์Šค๋ฅผ fullfileld ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ
์‹คํŒจโ†’ reject ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด rejected ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ

  • ํ”„๋กœ๋ฏธ์Šค๋Š” ์ฝœ๋ฐฑ ํŒจํ„ด ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ฌธ๋ฒ•.. ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋‹ค. ๊ฐ์ฒด๋‹ค.

2. ํ”„๋กœ๋ฏธ์Šค ๊ฐ์ฒด๊ฐ€ ๊ฐ–๋Š” ํ›„์† ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

ํ›„์†๋ฉ”์„œ๋“œ then(fullfilled) . catch( rejected) , finally(ํ•œ ๋ฒˆ๋งŒ..) ๋“ฑ. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜๋ฉด ํ›„์† ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ์„ ํƒ์ ์œผ๋กœ ํ˜ธ์ถœ ๋จ. ์ด๋•Œ ์ฝœ๋ฐฑํ•จ์ˆ˜์— ํ”„๋กœ๋ฏธ์Šค์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ๋‹ค. ๋ชจ๋“  ํ›„์† ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•œ๋‹ค. promise ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋•Œ๋ฌธ์— chaining ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

3.HTTP ์š”์ฒญ์˜ ์ข…๋ฅ˜์™€ ์ •์˜๋ฅผ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

get, post, delete ..

patch โ‡’ ๊ฐ์ฒดํ˜•ํƒœ๊ฐ€ ์žˆ์„๋•Œ ๊ทธ ์ผ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •ํ• ๋•Œ.
put โ‡’ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒดํ• ๋•Œ ..

4. ๋‹ค์Œ ์˜ˆ์ œ์—์„œ todos๊ฐ€ undefined๋กœ ๋ฐ˜ํ™˜ ๋˜๋Š” ์ด์œ ๋Š”?

xhr์˜ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ, onload ๋ฉ”์„œ๋“œ๊ฐ€ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฌธ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๋”๋ผ๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ข…๋ฃŒ๋œ๋‹ค. (์ฆ‰, ์ฝœ์Šคํƒ์ด ์ฆ‰์‹œ๋น„์›Œ์ง€๊ณ , ํƒœ์Šคํฌ ํ์— ์ €์žฅ๋œ๋‹ค.) console.log ๋Š” ์ฝœ์Šคํƒ์— ์ถ”๊ฐ€๋˜๊ณ , ์ฝœ ์Šคํƒ์— ์žˆ๋Š” ์ปจํ…์ŠคํŠธ๋“ค์ด ์ „๋ถ€ ์‹คํ–‰์ด ์™„๋ฃŒ๊ฐ€๋˜๊ณ  ๋น„์–ด์•ผ์ง€๋งŒ(์ฝœ์Šคํƒ์€ 1๋ฒˆ์— 1๊ฐœ์”ฉ๋งŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ..) ์ด๋ฒคํŠธ ๋ฃจํ”„์— ์˜ํ•ด์„œ ์ฝœ ์Šคํƒ์œผ๋กœ ํ‘ธ์‹œ๋˜์–ด ์‹คํ–‰๋˜๋ฏ€๋กœ getํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์ „์— console.log(todos)๊ฐ€ ์‹คํ–‰๋˜์–ด undefined๊ฐ€ ์ถœ๋ ฅ๋˜๊ฒŒ ๋œ๋‹ค. console.log๊ฐ€ ์ฐํžˆ๋Š” ์‹œ์ ๋ณด๋‹ค ๋จผ์ € ์„œ๋ฒ„์—์„œ ๊ฐ’์„ ์ „์†ก๋ฐ›์•„๋„, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋™์ž‘ํ•œ๋‹ค.

getํ•จ์ˆ˜ ํ˜ธ์ถœ โ†’ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํƒœ์Šคํฌ ํ ์ด๋™ โ†’ ํ•จ์ˆ˜ ์ข…๋ฃŒ โ†’ ์ดํ›„ ์ฝ”๋“œ๋ฌธ ์ฒ˜๋ฆฌ โ†’ ํƒœ์Šคํฌ ํ์— ์ด๋ฒคํŠธ๊ฐ€ ์ฝœ ์Šคํƒ์œผ๋กœ ์ด๋™ โ†’ ์ด๋ฒคํŠธ ์ฝ”๋“œ ์‹คํ–‰ (?)

5.๋‹ค์Œ ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ ํŒจํ„ด์—์„œ ์—๋Ÿฌ๋ฅผ ํ•ธ๋“ค๋ง ํ•˜๊ธฐ ์–ด๋ ค์šด ์ด์œ ๋Š”?

์—๋Ÿฌ๋Š” ํ˜ธ์ถœ์ž ๋ฐฉํ–ฅ์œผ๋กœ ์ „ํŒŒ๋˜๋Š”๋ฐ setTimeout์€ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋กœ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋จ๊ณผ ์ฆ‰์‹œ์— ์ข…๋ฃŒ๋˜๋ฉด์„œ ์ฝœ ์Šคํƒ์—์„œ ์ œ๊ฑฐ๋œ๋‹ค. ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ํƒœ์Šคํฌํ์— ์ €์žฅ๋˜์—ˆ๋‹ค๊ฐ€ ์ฝœ ์Šคํƒ์ด ๋น„๋ฉด ์ด๋ฒคํŠธ ๋ฃจํ”„์— ์˜ํ•ด์„œ ์‹คํ–‰๋˜๋Š”๋ฐ ์ด ๋•Œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ปจํƒ์ŠคํŠธ์ธ ํ•˜์œ„ ์ปจํƒ์ŠคํŠธ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ถœ์ž๊ฐ€ ์—†๋Š”๊ฑธ๋กœ ์ธ์‹๋˜์–ด catch ๋ธ”๋ก์—์„œ ์ •์ƒ์ ์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ์žกํžˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

6. promise.all ์„ ์‚ฌ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์‹œ์˜ค

//resolve๋ผ๋Š” ์ด๋ฆ„์„ ๋‹ค๋ฅธ๊ฑธ๋กœ ๋ฐ”๊พธ๋ฉด error ๋ฐœ์ƒ
const req1 = () =>
new Promise(resolve => setTimeout(()=>resolve(1),1000));
const req2 = () =>
new Promise(resolve => setTimeout(()=>resolve(2),2000));
const req3 = () =>
new Promise(resolve => setTimeout(()=>resolve(3),3000));

//const ์„ ์–ธ์‹œ ๋ณ€์ˆ˜ ๊ฐ’ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€
let resonse = [];
req1()
  .then(data => {
    resonse.push(data);
    return req2();
  })
  .then(data => {
    resonse.push(data);
    return req3();
  })
  .then(data => {
    resonse.push(data);
    console.log(res);
  })
  .catch(console.error);
let resonse = [];

Promise.all([req1(), req2(), req3()])
  .then(result => resonse = result)
  .catch(console.error);
profile
์ด์ง€ํ”ผ์ง€๋ ˆ๋ชฌ์Šคํ€ด์ง€๐Ÿ‹

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด

Powered by GraphCDN, the GraphQL CDN