๐Ÿ’ป My Work/๐Ÿ”ฅ React

[React/JS] Async & Await

Jaeseo Kim 2022. 9. 27. 23:59

00. ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ


  • ๋™๊ธฐ์  : ์š”์ฒญ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ
  • ๋น„๋™๊ธฐ์  : ์š”์ฒญ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ , ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

 

 

01. Async & Await


JS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„๋™๊ธฐ์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” Async & Await์œผ๋กœ ๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

/** ๋™๊ธฐ์  */
  async function sync() {

	/** ์ฒซ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f1();

    /** ๋‘ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f2();

    /** ์„ธ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f3();
    
  }

 

๋งŒ์•ฝ f2๋Š” f1, f3 ์˜ ๊ฒฐ๊ณผ์™€ ์ƒ๊ด€์—†๋Š” ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด๋„ ์ƒ๊ด€์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

/** ๋™๊ธฐ์  */
  async function sync() {

	/** ์ฒซ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f1();

    /** ์ˆœ์„œ ์ƒ๊ด€ ์—†๋Š” ํ•จ์ˆ˜ */
    f2();

    /** ์„ธ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f3();
    
  }

 

02. await ํ•  ํ•จ์ˆ˜ ๋‚ด์— ์ด๋ฏธ async๋กœ ๊ตฌํ˜„๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด?


์ด๋ฏธ ํ•จ์ˆ˜ ์ž์ฒด๊ฐ€ async๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด์„œ, ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•œ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด Async & Await์œผ๋กœ ๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

/** ๋™๊ธฐ์  */
async function sync() {

	/** ์ฒซ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f1();

    /** ๋‘ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f2();

    /** ์„ธ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋  ํ•จ์ˆ˜ */
    await f3();
    
 }
  
async function f2() {

    await f4()
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });

 }
 
 async function f4() {
  try {
    await axios
      .get("api ์ฃผ์†Œ")
      .then((res) => {
        console.log(res);
      });
	...
  } catch (err) {
    console.log(err);
    }
  }
}

 

์•Œ๋ž‘,,๋ง๋ž‘....๐ŸŒ ๐ŸŒ ๐ŸŒ