๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

JS์˜ ํ•ต์‹ฌ! : Promise์™€ async ๊ทธ๋ฆฌ๊ณ  await ๋ณธ๋ฌธ

๐Ÿ“’JS/โšกver.1

JS์˜ ํ•ต์‹ฌ! : Promise์™€ async ๊ทธ๋ฆฌ๊ณ  await

4:Bee 2023. 4. 17. 20:56
728x90

 YouTube Link
 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 2. ์ฝ˜์†”์— ์ถœ๋ ฅ, script async ์™€ defer์˜ ์ฐจ์ด์  ๋ฐ ์•ž์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณต๋ถ€ ๋ฐฉํ–ฅ | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…๋ฌธํŽธ (JavaScript ES5+)
https://youtu.be/tJieVCgGzhs
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 12. ํ”„๋กœ๋ฏธ์Šค ๊ฐœ๋…๋ถ€ํ„ฐ ํ™œ์šฉ๊นŒ์ง€ JavaScript Promise | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…๋ฌธํŽธ (JavaScript ES6)
https://youtu.be/JB_yU6Oe2eE
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 13. ๋น„๋™๊ธฐ์˜ ๊ฝƒ JavaScript async ์™€ await ๊ทธ๋ฆฌ๊ณ  ์œ ์šฉํ•œ Promise APIs | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…๋ฌธํŽธ (JavaScript ES6)
https://youtu.be/aoQSOZfz3vQ

๋™์ž‘์›๋ฆฌ :  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 2. ์ฝ˜์†”์— ์ถœ๋ ฅ, script async ์™€ defer์˜ ์ฐจ์ด์  ๋ฐ ์•ž์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณต๋ถ€ ๋ฐฉํ–ฅ | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…๋ฌธํŽธ (JavaScript ES5+)

๋ธŒ๋ผ์šฐ์ €๋Š” ํ•œ์ค„ํ•œ์ค„ ์ฝ๋Š”๋‹ค. (ํŒŒ์‹ฑ(parsing)์€ ๊ตฌ๋ฌธ ๋ถ„์„์ด๋‹ค.) -> ๋”ฐ๋กœ ๋‹ค์‹œ ๊ธ€์„ ํฌ์ŠคํŒ…ํ•  ์˜ˆ์ •์ด๋‹ค.


 


promise : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 12. ํ”„๋กœ๋ฏธ์Šค ๊ฐœ๋…๋ถ€ํ„ฐ ํ™œ์šฉ๊นŒ์ง€ JavaScript Promise | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…๋ฌธํŽธ (JavaScript ES6)


ํ™”์‚ดํ‘œ๊ธฐ๋ฒ•์— ์™„๋ฒฝํ•œ ์ดํ•ด๊ฐ€ ์—†์–ด ๋ณด์ธ๋‹ค. ์™œ {}๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ์ธ์ง€ ์•„์ง ์ •ํ™•ํžˆ ์ด์œ ๋ฃฐ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๋”ฐ๋ผ์„œ ์ดํ›„์— ๋น ๋ฅด๊ฒŒ ํ™”์‚ดํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ๋“ค์„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

{}๊ฐ€ ์žˆ๋Š” ๊ฒƒ๊ณผ ์—†๋Š” ๊ฒƒ์˜ ์ฐจ์ด๋Š” ๋ฐ”๋กœ ํ•จ์ˆ˜์˜ ์„ ๊ณผ ์—ฐ๊ด€์ด ์žˆ๋‹ค. ์™œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด return์„ ๊ฐ€์ง€์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ฐ”๋กœ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰์ด ๋˜๊ธฐ ์œ„ํ•ด ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

const getHen = () => {
  const value = new Promise((resolve, reject) => {
    setTimeout(() => resolve(`Chicken`), 1000);
  })
  return value;
}
const getEgg = hen => {
  const value = new Promise((resolve, reject) => {
    setTimeout(() => resolve(`${hen} => Egg`), 1000);
  })
  return value;
}
const cook = egg => {
  const value = new Promise((resolve, reject) => {
    setTimeout(() => resolve(`${egg} => meal`), 1000);
  })
  return value;
}

getHen()//
  .then(getEgg)
  .then(hen => getEgg(hen))
  .then(egg => cook(egg))
  .then(meal => console.log(meal));

return๋ฌธ์„ ๋„ฃ์œผ๋ฉด ์‹คํ–‰์ด๋œ๋‹ค. ๋ฌผ๋ก  ์œ„์˜ ํ•จ์ˆ˜๋„ ํ™”์‚ดํ‘œ์ด์ง€๋งŒ ๋Œ€๊ด„ํ˜ธ('{}')๋ฅผ ํ†ตํ•ด์„œ ํ•จ์ˆ˜์˜ ์„ ์–ธ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— return์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๊ด„ํ˜ธ๊ฐ€ ์žˆ๋Š” ํ•จ์ˆ˜์„ ์–ธํ•˜๊ณ  Promise .then์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜ํ™˜๊ฐ’(return)์ด ์—†๊ธฐ๋•Œ๋ฌธ์— undefined๊ฐ’์ด ์ถœ๋ ฅ๋˜๋ฉฐ Promise๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ ์ฝ”๋“œ์™€ ์ฝ˜์†”์„ ์ฐธ๊ณ ํ•˜์ž

retunr์ด ์—†๋Š” ๋ฐ˜ํ™˜ ๋˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋Š” undefined์ด๋‹ค.

 


Promise ์‹ค์Šต ์ฝ”๋“œ : new Promise

'use strict'
//1.producer : ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ๋“ค
const promise = new Promise((resolve, reject) => {
  console.log('doing something..')
  setTimeout(() => {
    //resolve('ellie', console.log('ellie'));
    reject(new Error('no network'));
  }, 2000);
});

//2.consumers:then, catch, finally
//resolve๊ฐ€ ๋˜๋ฉด then์— ๋„˜๊ฒจ ๋ฐ›์•„ ๋‹ค์Œ ๊ตฌ๋ฌธ์ด ์‹คํ–‰
promise
  .then(value => {
    console.log(`value : ${value}`);
  })
  .catch(error => {
    console.log(error);
  })
  .finally(() => {
    console.log('finally')
  })

//3. Promise chaining
const fetchNumber = new Promise((resolve, reject) => {
  setTimeout(() => resolve(1), 1000);
});

fetchNumber
  .then(num => num * 2)
  .then(num => num * 3)
  .then(num => {
    return new Promise((resolve, reject) => {
      setTimeout(() => resolve(num - 1), 1000);
    });
  })
  .then(num => console.log(num));

//4.Error Handling
const getHen = () =>
  new Promise((resolve, reject) => {
    setTimeout(() => resolve(`Chicken`), 1000);
  })

const getEgg = hen =>
  new Promise((resolve, reject) => {
    // setTimeout(() => resolve(`${hen} => Egg`), 1000);
    setTimeout(() => reject(new Error(`error! ${hen} => Egg`)), 1000);
  })

const cook = egg =>
  new Promise((resolve, reject) => {
    setTimeout(() => resolve(`${egg} => meal`), 1000);
  })


getHen()
  .then(getEgg)
  .catch(error => {
    return 'bread';
  })
  // .then(hen => getEgg(hen))
  .then(egg => cook(egg))
  .then(meal => console.log(meal));

Promise - JavaScript | MDN

Promise ๊ฐ์ฒด๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์ด ๋งž์ดํ•  ๋ฏธ๋ž˜์˜ ์™„๋ฃŒ ๋˜๋Š” ์‹คํŒจ์™€ ๊ทธ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

developer.mozilla.org

++์—ฌ๊ธฐ์„œ ๋” ๊นŠ์€ Promise๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„  ๋‹ค์Œ ๊ธ€์ธ Promise+Plus ํฌ์ŠคํŒ…์„ ํ™•์ธํ•˜์ž.

' new Promise()๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ํ•ด๋‹น Promise๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์—์„œ ์ด Promise๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.' ์ด ๋ง์ด ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€.. new Promise()์•ˆ์—” return์ด ์—†๋Š”๊ฑธ ๊ทผ๋ฐ ์–ด๋–ค๊ฑธ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฑฐ์ง€?
new Promise()๋Š” Promise ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Promise ๊ฐ์ฒด๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ, ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด resolve ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ณ , ์ž‘์—…์ด ์‹คํŒจํ•˜๋ฉด reject ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•˜๊ณ  ์—๋Ÿฌ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
์œ„์˜ ์ฝ”๋“œ์—์„œ new Promise((res) => { res("res"); })๋Š” res("res")๋ฅผ ์‹คํ–‰ํ•˜์—ฌ "res"๋ผ๋Š” ๊ฐ’์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ Promise ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์™ธ๋ถ€์—์„œ ์ด Promise ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ, ์ด Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์ด Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, print() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜๋˜๋Š” Promise ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 
Promise+Plus ํฌ์ŠคํŒ…์— "new Promise()๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ํ•ด๋‹น Promise๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค"์˜ ์˜๋ฏธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํŒŒํ—ค์ณ๋ณด์ž! 

JS์˜ ํ•ต์‹ฌ Promise+Plus

์ผ๊ธฐ JS์˜ ํ•ต์‹ฌ Promise+Plus ๋ณธ๋ฌธ JS/JS:Main_Function JS์˜ ํ•ต์‹ฌ Promise+Plus Rwoo 2023. 4. 25. 01:16

hi-code.tistory.com


YouTube Link 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 5. Arrow Function์€ ๋ฌด์—‡์ธ๊ฐ€? ํ•จ์ˆ˜์˜ ์„ ์–ธ๊ณผ ํ‘œํ˜„ | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…๋ฌธํŽธ(JavaScript ES6)
https://youtu.be/e_lU39U-5bQ

Arrowํ•จ์ˆ˜ ์‹ค์Šต ์ฝ”๋“œ

const btn = document.querySelector('#btn');
const arrow = () => console.log("Hello Arrow");
const arrow_0 = () => { console.log("Hello arrow_@@") }

btn.addEventListener('click', arrow);
btn.addEventListener('click', arrow_0);

const add0 = (a, b) => a + b;
const add1 = (a, b) => { a + b };

async&await : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 13. ๋น„๋™๊ธฐ์˜ ๊ฝƒ JavaScript async ์™€ await ๊ทธ๋ฆฌ๊ณ  ์œ ์šฉํ•œ Promise APIs | ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…๋ฌธํŽธ (JavaScript ES6)


 
๋น„๋™๊ธฐ์„œ๋กœ ๋‹ค๋ฅธ์ผ์ด ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค.(๋ณ‘๋ ฌ์„ฑ์— ๊ฐ€๊น๋‹ค.)
๋™๊ธฐ์„œ๋กœ๊ฐ€ ๋  ์ˆ˜ ์—†๊ณ  ์˜ค๋กœ์ง€ ํ•˜๋‚˜๋กœ ๋ฌถ์—ฌ ์žˆ์–ด์„œ ์ž‘์—…์ด ์ˆœ์ฐจ์ ์ผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
์Šค๋ ˆ๋“œ(Thread)ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์€ ์ž‘์—… ๋‹จ์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ์ž‘์—… ๊ณต๊ฐ„(Thread Context)์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๊ณต๊ฐ„์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ƒ์„ฑ๋˜๊ณ , ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—… ๊ณต๊ฐ„์—๋Š” ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, ์Šคํƒ, ๋™์  ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

async๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด promise๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ promise๊ฐ€ ์ ์šฉ์ด ๋œ๋‹ค.


async.js ์ฝ”๋“œ ๋ฆฌ๋ทฐ

console.log("async");
//1.async

//normal function
/*function fetchUser() {
  return 'ellie'
}*/

//promise function
/*function fetchUser() {
  return new Promise((resolve, reject) => {
    resolve('ellie');
  })
}*/

//promise function2
function fetchUser() {
  return new Promise((resolve) => {
    resolve('ellie');
  })
}

//async function
/*async function fetchUser() {
  return 'ellie';
}*/

const user = fetchUser();
user.then(console.log);
// console.log(user);
 

๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” new Promise๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ•˜๋Š” ์•„์ฃผ ๊ธฐ๋ณธ์ ์ด ํ˜•ํƒœ์ด๋‹ค. ๋”ฑํžˆ ํฌ๊ฒŒ ๋‹ค๋ฃฐ ๋ถ€๋ถ„์€ ์—†์–ด๋ณด์ธ๋‹ค.


async_0.js ์ฝ”๋“œ ๋ฆฌ๋ทฐ

console.log("async_0");
//1.async
//async function
async function fetchUser() {
  return 'ellie';
}

const user = fetchUser();
user.then(console.log);//์ด๋ ‡๊ฒŒ ํ‘œ๊ธฐ๊ฐ€ ๋˜๋Š” ๊ฒƒ.. ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฑฐ์ง€?
// console.log(user);

//2.await
//setTimeout์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ํ•ด๋ณด๊ธฐ
function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function getApple() {
  await delay(1000);
  return 'Apple';
}

async function getBanana() {
  await delay(1000);
  return 'Banana';
}

//์œ„ ํ•จ์ˆ˜์™€ ๋™์ผํ•˜๋‹ค
/*function getBanana() {
  return delay(3000)
    .then(() => 'Banana');
}*/

// function pickFruits() {
//   return getApple().then(apple => {
//     return getBanana().then(banana => `${apple} + ${banana}`);
//   })
// }

async function pickFruits() {
  const apple = await getApple();
  const banana = await getBanana();
  return `${apple} + ${banana}`;
}
pickFruits().then(console.log);
 

๋ณธ๊ฒฉ์ ์œผ๋กœ async๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ async์— promise๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” async๋‚ด๋ถ€์— promise๊ฐ€ ๋‚ด์žฅ๋˜์–ด์žˆ๋‹ค. ๋”ฐ๋ผ์„œ promise๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์•Œ์•„์„œ ์ƒ์„ฑ์ด๋œ๋‹ค.


async_1.js ์ฝ”๋“œ ๋ฆฌ๋ทฐ

console.log("async_0");
//1.async
//async function
async function fetchUser() {
  return 'ellie';
}

const user = fetchUser();
user.then(console.log);
// console.log(user);

//2.await
//setTimeout์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ํ•ด๋ณด๊ธฐ
function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function getApple() {
  await delay(1000);
  return 'Apple';
}

async function getBanana() {
  await delay(1000);
  return 'Banana';
}

/*async function pickFruits() {
  const apple = await getApple();
  const banana = await getBanana();
  return `${apple} + ${banana}`;
}*/
//์—ฌ๊ธฐ์„œ๋Š” apple 1์ดˆ + banana 1์ดˆ ํ•ด์„œ 2์ดˆ ์ด์ง€๋งŒ ์•„๋ž˜๋Š” 1์ดˆ๋งŒ์— ์ƒ์„ฑ์ด๋œ๋‹ค.

/*async function pickFruits() {
  const applePromise = getApple();
  const bananaPromise = getBanana();
  const apple = await applePromise;
  const banana = await bananaPromise;
  return `${apple} + ${banana}`;
}*/
//pickFruits().then(console.log);

//3.useful Promise APIs
function pickAllFruits() {
  return Promise.all([getApple(), getBanana()])
    .then(fruits => fruits.join(' + '));
}

pickAllFruits().then(console.log);

function pickOnlyOne() {
  return Promise.race([getApple(), getBanana()]);
}
pickOnlyOne().then(console.log);

ํ˜ผํ”„๊ด€๋ จ ํฌ์ŠคํŒ…์—์„œ๋Š” miniํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์ž‘ํ•˜๋Š” ํฌ์ŠคํŒ…์ด๋‹ค. Vanila ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด๋ณธ ํฌ์ŠคํŒ…์ด๋‹ค.

JS์˜ ํ•ต์‹ฌ! ํ˜ผํ”„~ with async&await

์ผ๊ธฐ JS์˜ ํ•ต์‹ฌ! ํ˜ผํ”„~ with async&await ๋ณธ๋ฌธ JS/JS:Main_Function JS์˜ ํ•ต์‹ฌ! ํ˜ผํ”„~ with async&await Rwoo 2023. 4. 25. 18:10

hi-code.tistory.com

 

728x90
Comments