55
55
56
56
[ Promise] ( #promise )
57
57
58
- Async Await
58
+ [ Async Function ] ( #async-function )
59
59
60
60
Array.prototype.includes
61
61
@@ -561,8 +561,8 @@ delivery()
561
561
console .log (' ๋นจ๋ ์์' )
562
562
563
563
// ๊ฒฐ๊ณผ ๐
564
- // ๋นจ๋ ์์ ... ๋ฐฐ๋ฌ์ด ๋์ฐฉํ๊ธฐ๋ ์ ์ ๋นจ๋๋ฅผ ์์ํ์ต๋๋ค.
565
- // ๋ฐฐ๋ฌ ๋์ฐฉ
564
+ // -> ๋นจ๋ ์์ ... ๋ฐฐ๋ฌ์ด ๋์ฐฉํ๊ธฐ๋ ์ ์ ๋นจ๋๋ฅผ ์์ํ์ต๋๋ค.
565
+ // -> ๋ฐฐ๋ฌ ๋์ฐฉ
566
566
```
567
567
568
568
@@ -583,8 +583,8 @@ delivery().then(() => {
583
583
})
584
584
585
585
// ๊ฒฐ๊ณผ ๐
586
- // ๋ฐฐ๋ฌ ๋์ฐฉ
587
- // ๋นจ๋ ์์
586
+ // -> ๋ฐฐ๋ฌ ๋์ฐฉ
587
+ // -> ๋นจ๋ ์์
588
588
589
589
```
590
590
@@ -616,7 +616,7 @@ delivery('์์์ผ').then(() => {
616
616
})
617
617
618
618
// ๊ฒฐ๊ณผ ๐
619
- // ๋งฅ๋๋ ๋ ๋ฐฉ๋ฌธํ๊ธฐ
619
+ // -> ๋งฅ๋๋ ๋ ๋ฐฉ๋ฌธํ๊ธฐ
620
620
```
621
621
622
622
@@ -638,6 +638,112 @@ promise.then()
638
638
promise .then ()
639
639
640
640
// ๊ฒฐ๊ณผ ๐
641
- // ์๋
... ๋จ ํ ๋ฒ ์ถ๋ ฅ๋จ
641
+ // -> ์๋
... ๋จ ํ ๋ฒ ์ถ๋ ฅ๋จ
642
+ ```
643
+
644
+ ---
645
+
646
+ # Async Function
647
+
648
+ ### ์ ์
649
+
650
+ Promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ํจ์
651
+
652
+ ### ํน์ง
653
+
654
+ Async Function ์ ` await ` ํค์๋๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ์ผ ํด์ค๋๋ค. ` await ` ํค์๋๋ Async Function ์์๋ง ์ ํจํฉ๋๋ค.
655
+
656
+ ` await ` ํค์๋๋ Async Function ์ด ๋๋๊ธธ(` return or throw ` ) ๊ธฐ๋ค๋ฆฝ๋๋ค.
657
+
658
+ Async Function ๋ ` return ` ํน์ ` throw ` ๋ฌธ์ผ๋ก ๋๋ผ ์ ์์ต๋๋ค.
659
+
660
+ Async/Await ์ ์ฌ์ฉํ๋ฉด ์ผ๋ จ์ ๋น๋๊ธฐ ์์
์ ๋น๊ต์ ์ฝ๊ฒ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ํธ์ถ ๊ฐ๋ฅ์ผ ํด์ค๋๋ค.
661
+
662
+ ### ์ฐธ๊ณ
663
+
664
+ ์์ ์ฝ๋๋ค์ ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ` top-level-await ` ๊ธฐ๋ฅ์ด ํ์ฌ๋ ํ๊ฒฝ์์ ์งํํ์ต๋๋ค. ` top-level-await ` ์ ECMAScript proposal stage 3 ์ํ๋ฉฐ ์์ธํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
665
+
666
+ [ tc39/proposal-top-level-await - GitHub] ( https://github.com/tc39/proposal-top-level-await )
667
+
668
+ ### 1. ๋น๋๊ธฐ ์์
ํ๊ธฐ
669
+
670
+ ๐์๋๋ฆฌ์ค: ๊ตฌ๊ธ ๊ฒ์ ํ์ด์ง๋ฅผ ํฌ๋กค๋ง ํด์ค์ธ์. ํฌ๋กค๋ง์ ์๋ฃํ๋ ๊ฒ์ ๊ธฐ๋ค๋ฆฌ์ง ๋ง๊ณ ` ์ด๋ฉ์ผ์ ์ ์ก ` ํ์ธ์.
671
+
672
+ ๐์กฐ๊ฑด: Async Function ์ ํ์ฉํ์ธ์.
673
+
674
+ ### ํธโ์ โ
675
+
676
+ ``` js
677
+ async function google () {
678
+ // ...
679
+ console .log (' ๊ตฌ๊ธ ํฌ๋กค๋ง ์๋ฃ' )
680
+ }
681
+
682
+ google () // ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋ฉ๋๋ค.
683
+ console .log (' ์ด๋ฉ์ผ ์ ์ก' )
684
+
685
+ // ๊ฒฐ๊ณผ ๐
686
+ // -> ์ด๋ฉ์ผ ์ ์ก
687
+ // -> ๊ตฌ๊ธ ํฌ๋กค๋ง ์๋ฃ
688
+ ```
689
+
690
+ ### 2. ๋น๋๊ธฐ ์์
์ ๊ธฐ๋ค๋ฆฌ๊ธฐ
642
691
692
+ ๐์๋๋ฆฌ์ค: ๊ตฌ๊ธ ๊ฒ์ ํ์ด์ง๋ฅผ ํฌ๋กค๋ง ํด์ค์ธ์. ํฌ๋กค๋ง์ ์๋ฃํ ๋ค ` ์ด๋ฉ์ผ์ ์ ์ก ` ํ์ธ์.
693
+
694
+ ๐์กฐ๊ฑด: Async Function ์ ํ์ฉํ์ธ์.
695
+
696
+ ### ํธโ์ โ
697
+ ``` js
698
+ async function google () {
699
+ // ...
700
+ console .log (' ๊ตฌ๊ธ ํฌ๋กค๋ง ์๋ฃ' )
701
+ }
702
+
703
+ await google () // await ํค์๋๊ฐ ๋๊ธฐ์ ์ผ๋ก ์คํํ๋๋ก ๋ง๋ค์ด์ค๋๋ค. ๐
704
+ console .log (' ์ด๋ฉ์ผ ์ ์ก' )
705
+
706
+ // ๊ฒฐ๊ณผ ๐
707
+ // -> ๊ตฌ๊ธ ํฌ๋กค๋ง ์๋ฃ
708
+ // -> ์ด๋ฉ์ผ ์ ์ก
709
+ ```
710
+ ### 3. ๊ฒฐ๊ณผ ๋ค๋ฃจ๊ธฐ
711
+
712
+ ### ํ์ฉ 1: ์ฑ๊ณต (return)
713
+
714
+ ๐์๋๋ฆฌ์ค: ` getUser ` ํจ์๋ก ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค์ธ์. ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ` name ` ํ๋์ ๊ฐ์ ์ถ๋ ฅํ์ธ์.
715
+
716
+ ๐์กฐ๊ฑด: ` await ` ํค์๋๋ก ` getUser ` ํจ์๊ฐ ๋ฐํํ๋ ๊ฐ์ ๋ฐ์์ค์ธ์.
717
+
718
+ ### ํธโ์ โ
719
+
720
+ ``` js
721
+ async function getUser () {
722
+ const result = await dbQuery ()
723
+ return result
724
+ }
725
+
726
+ const user = await getUser () // await ํค์๋๊ฐ getUser ํจ์์ ๋ฐํ์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ๐
727
+
728
+ console .log (user .name )
729
+ ```
730
+
731
+ ### ํ์ฉ2: ์คํจ (throw)
732
+
733
+ ๐์๋๋ฆฌ์ค: ๋ฐฐ๋ฌ ์์์ ์ฃผ๋ฌธํ์ธ์. ๋ฐฐ๋ฌ์ด ๋์ฐฉํ๋ฉด(` return ` ) ์์์ ๋จน๊ณ , ๋ง์ฝ ์ฃผ๋ฌธ์ด ์ทจ์๋๋ฉด(` throw ` ) ๋ฐฉ๋ฌธ ํฌ์ฅ์ ํด์ค์ธ์.
734
+
735
+ ### ํธโ์ โ
736
+
737
+ ``` js
738
+ async function delivery () {
739
+ // ...
740
+ throw new Error (' ์ฃผ๋ฌธ ๊ฑฐ์ !' )
741
+ }
742
+
743
+ try {
744
+ await delivery () // await ํค์๋๊ฐ ๋๋ถ์ ๋น๋๊ธฐ ํธ์ถ์ ์คํจ๋ฅผ ๋ค๋ฃฐ์ ์์ต๋๋ค. ๐
745
+ // ... ๋ฐฐ๋ฌ ์์ ๋จน๊ธฐ
746
+ } catch (error) {
747
+ // ... ๋ฐฉ๋ฌธ ํฌ์ฅ ํด์ค๊ธฐ
748
+ }
643
749
```
0 commit comments