Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0a3a7f3

Browse files
committed
Add: Async Function
1 parent 089b9b3 commit 0a3a7f3

File tree

1 file changed

+113
-7
lines changed

1 file changed

+113
-7
lines changed

โ€ŽREADME.md

Lines changed: 113 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555

5656
[Promise](#promise)
5757

58-
Async Await
58+
[Async Function](#async-function)
5959

6060
Array.prototype.includes
6161

@@ -561,8 +561,8 @@ delivery()
561561
console.log('๋นจ๋ž˜ ์‹œ์ž‘')
562562

563563
// ๊ฒฐ๊ณผ ๐Ÿ‘Ž
564-
// ๋นจ๋ž˜ ์‹œ์ž‘ ... ๋ฐฐ๋‹ฌ์ด ๋„์ฐฉํ•˜๊ธฐ๋„ ์ „์— ๋นจ๋ž˜๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
565-
// ๋ฐฐ๋‹ฌ ๋„์ฐฉ
564+
// -> ๋นจ๋ž˜ ์‹œ์ž‘ ... ๋ฐฐ๋‹ฌ์ด ๋„์ฐฉํ•˜๊ธฐ๋„ ์ „์— ๋นจ๋ž˜๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
565+
// -> ๋ฐฐ๋‹ฌ ๋„์ฐฉ
566566
```
567567

568568

@@ -583,8 +583,8 @@ delivery().then(() => {
583583
})
584584

585585
// ๊ฒฐ๊ณผ ๐Ÿ‘
586-
// ๋ฐฐ๋‹ฌ ๋„์ฐฉ
587-
// ๋นจ๋ž˜ ์‹œ์ž‘
586+
// -> ๋ฐฐ๋‹ฌ ๋„์ฐฉ
587+
// -> ๋นจ๋ž˜ ์‹œ์ž‘
588588

589589
```
590590

@@ -616,7 +616,7 @@ delivery('์›”์š”์ผ').then(() => {
616616
})
617617

618618
// ๊ฒฐ๊ณผ ๐Ÿ‘
619-
// ๋งฅ๋„๋‚ ๋“œ ๋ฐฉ๋ฌธํ•˜๊ธฐ
619+
// -> ๋งฅ๋„๋‚ ๋“œ ๋ฐฉ๋ฌธํ•˜๊ธฐ
620620
```
621621

622622

@@ -638,6 +638,112 @@ promise.then()
638638
promise.then()
639639

640640
// ๊ฒฐ๊ณผ ๐Ÿ‘
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. ๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ
642691

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+
}
643749
```

0 commit comments

Comments
ย (0)