[JS] Promise / async / await

JIOOยท2021๋…„ 10์›” 10์ผ
0

ES6

๋ชฉ๋ก ๋ณด๊ธฐ
6/17

์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ Promise

๐Ÿ‘ฉโ€๐ŸŽ“ ํ”„๋กœ๋ฏธ์Šค๋ž€?
ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ํ–ˆ์„๋•Œ ์„ฑ๊ณต/์‹คํŒจ์— ๋”ฐ๋ผ ๋‹ค์Œ ๋™์ž‘์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.

๐Ÿ“ ์˜ˆ์‹œ

var promise = new Promise(function(resolve,reject){ 
 var sum = 1+1
 resolve(์—ฐ์‚ฐ) 
 //๊ผญ ์„ฑ๊ณต ์‹คํŒจ๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผํ•จ
 //์„ฑ๊ณต์‹œ then์— ์—ฐ์‚ฐ์ด๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „์†ก
});

promise.then(function(result){ //์„ฑ๊ณต์‹œ ์‹คํ–‰

}).catch(function(){ //์‹คํŒจ์‹œ ์‹คํ–‰

});

โ€ป ์„ฑ๊ณต/์‹คํŒจ ํŒ์ • ์ „์—๋Š” pending ์ด๋ผ๊ณ  ๋‚˜์˜ด (ํŒ์ •๋Œ€๊ธฐ์ƒํƒœ)

๐Ÿ“ ๋” ์‰ฝ๊ฒŒ

var ์„ฑ๊ณต์‹คํŒจํŒ์ •๊ธฐ = new Promise(function(์„ฑ๊ณต,์‹คํŒจ){ 
 var ์ผ๋”ํ•˜๊ธฐ์ผํ•˜๊ธฐ = 1+1
 ์„ฑ๊ณต(์—ฐ์‚ฐ)
});

promise.then(function(๋”ํ•œ๊ฒฐ๊ณผ){ //์„ฑ๊ณต์‹œ ์‹คํ–‰
console.log(๋”ํ•œ๊ฒฐ๊ณผ)
}).catch(function(์‹คํŒจ๊ฒฐ๊ณผ){ //์‹คํŒจ์‹œ ์‹คํ–‰
 console.log("์‹คํŒจํ–ˆ์–ด์š”")
});

๐Ÿ“– ์ด๊ฒŒ ํ™œ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ : ajax์™€ axios

async

๐Ÿ‘ฉโ€๐ŸŽ“ Promise ๋งŒ๋“ค๊ธฐ ๊ท€์ฐฎ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ES8๋ฌธ๋ฒ•์ž„

๐Ÿ“ ์˜ˆ์‹œ

async function ๋”ํ•˜๊ธฐ(){
  1 + 1 
}

๋”ํ•˜๊ธฐ().then(function(๊ฒฐ๊ณผ){
  console.log(๊ฒฐ๊ณผ,'๋”ํ•˜๊ธฐ ์„ฑ๊ณตํ–ˆ์–ด์š”')
});

async ๋ฌธ๋ฒ•์€ ํ•จ์ˆ˜์—๋งŒ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฑธ ๋ถ™์ด๋ฉด ์ž๋™์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ”„๋กœ๋ฏธ์Šค ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ”์คŒ

๋‹จ, async๋ฌธ๋ฒ•์€ ์„ฑ๊ณต์‹œ์—๋งŒ ์‹คํ–‰ ์‹คํŒจ์‹œ ๋ฉˆ์ถ˜๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

await

๐Ÿ‘ฉโ€๐ŸŽ“ Promise ์„ฑ๊ณต์‹œ then ๋Œ€์‹  ์‚ฌ์šฉํ•˜๊ณ  ํ”„๋กœ๋ฏธ์Šค๊ฐ€ ๋‹ค ๋  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์ฃผ๋Š” ๋ฌธ๋ฒ•

๐Ÿ“ ์˜ˆ์‹œ

async function 3์ดˆ์žˆ๋‹ค๋ณด๋‚ด๊ธฐ(){
  var ๋ณด๋‚ด๊ธฐ = new Promise((์„ฑ๊ณต, ์‹คํŒจ)=>{
    setTimeout(function(){
      ์„ฑ๊ณต("success")
    },3000)
  });
  var ๋ฐ›๊ธฐ = await ๋ณด๋‚ด๊ธฐ;
    console.log(๋ฐ›๊ธฐ);
}

3์ดˆ์žˆ๋‹ค๋ณด๋‚ด๊ธฐ()
  1. ๋ณด๋‚ด๊ธฐ Promise์—์„œ ์„ฑ๊ณตํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜ ๋ฐ›๊ธฐ์— ์—ฐ๊ฒฐ์‹œํ‚ฌ๋ ค๊ณ  ํ•จ

  2. ๋ณด๋‚ด๊ธฐ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์˜ค๊ธฐ๊นŒ์ง€๋Š” 3์ดˆ์˜์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ

  3. ํ•˜์ง€๋งŒ console์€ 3์ดˆ์˜ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ณด๋‚ด๊ธฐ์™€ ๋ฐ›๊ธฐ๋ฅผ ์—ฐ๊ฒฐ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์—
    ์ฝ˜์†”์— success๋Œ€์‹  pending (๋Œ€๊ธฐ์ƒํƒœ)๊ฐ€ ์ฐํžˆ๊ฒŒ ๋จ

  4. ๊ทธ๋ ‡๊ธฐ์— ๋ณด๋‚ด๊ธฐ์˜ 3์ดˆ๊ฐ€ ๋‹ค ํ๋ฅธ ํ›„ ๋ฐ›๊ธฐ์— ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ์„ธ์š” ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š”๊ฒƒ์ด await

profile
ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ์ข‹์€ ์›น์Ÿ์ด with Notion (์š”์ฆ˜์€ ๋…ธ์…˜๊ณผ ๋ณ‘ํ–‰ ์ค‘)

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