Jieunny์ ๋ธ๋ก๊ทธ
[TS] Promise์ async/await ๊ตฌ๋ฌธ ๋ณธ๋ฌธ
๐ฃ ๋น๋๊ธฐ ์ฝ๋ฐฑ ํจ์
๐ ๋๊ธฐ์ ๋น๋๊ธฐ API
โฐ ๋ ธ๋์ ์ด์์ค๋ ํ์ผ ์์คํ ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ๋ชจ์๋ fsํจํค์ง๋ฅผ ์ ๊ณตํ๋ค.
โฐ ๊ฐ์ ๊ธฐ๋ฅ์ ๋๊ธฐ์ ๋น๋๊ธฐ ๋ฒ์ ์ผ๋ก ๋๋์ด ์ ๊ณตํ๋ค.
โฐ ์ด๋ฆ์ Sync๊ฐ ๋ถ์ ๊ฒ์ด ๋๊ธฐ ๋ฒ์ ์ด๋ค.
import {readFileSync, readFile} from 'fs'
// ๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฝ๋ ์
const buffer: Buffer = readFileSync('./package.json')
console.log(buffer.toString())
// ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฝ๋ ์
readFile('./package.json', (error: Error, buffer: Buffer) => {
console.log(buffer.toString())
}
// Promise์ async/await ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์
const readFilePromise = (filename: string): Promise<string> =>
new Promise<string>((resolve, reject) => {
readFile(filename, ((error: Error, buffer: Buffer) => {
if(error) reject(error)
else resolve(buffer.toString())
})
});
(async () => {
const content = await readFilePromise('./package.json')
console.log(content)
})()
โฐ API ํจ์๋ ์ผ๋ฐ ํจ์์ ๋ฌ๋ฆฌ ํ๋๋์คํฌ์ ์ ์ฅ๋ ํ์ผ์ ์ฝ๋ ๋ฑ ์คํ ์ ๋ฌผ๋ฆฌ์ ์ธ ์๊ฐ์ด ์์๋๋ค.
โฐ ๋๊ธฐ ๋ฐฉ์ API : ํ์ผ ๋ด์ฉ์ ๋ชจ๋ ์ฝ์ ๋๊น์ง ํ๋ก๊ทธ๋จ์ ๋์์ ์ ์ ๋ฉ์ถ๋ ๋ฐฉ์
โฐ ๋น๋๊ธฐ ๋ฐฉ์ API : ๋์์ ๋ฉ์ถ์ง ์๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๋ฐฑ ํจ์๋ก ์ป๊ฒ ํ๋ ๋ฐฉ์
โฐ ๋น๋๊ธฐ API์ ์ฝ๋ฐฑ ํจ์๋ฅผ '๋น๋๊ธฐ ์ฝ๋ฐฑ ํจ์' ๋ผ๊ณ ํ๋ฉฐ, ์ด๋ ์ผ๋ฐ ํจ์์ ๋ฌ๋ฆฌ API์ ๋ฌผ๋ฆฌ์ ์ธ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์์ ํ๋ ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉํ๋ค.
๐ readFIleSync์ readFile API
โฐ ๋ ธ๋์ ์ด์์ค์์ ํ์ผ ์ฝ๊ธฐ๋ readFileSync๋ผ๋ API๋ฅผ ์ฌ์ฉํ๋ค.
โฐ readFileSync๋ ํ์ผ์ ์ฝ์ด์ Buffer๋ผ๋ ํ์ ์ผ๋ก ์ ๋ฌํด์ค๋ค.
โฐ Buffer๋ ๋ ธ๋์ ์ด์์ค๊ฐ ์ ๊ณตํ๋ ํด๋์ค๋ก์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
โฐ Buffer์ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ง๋ค ๋๋ Buffer์ toString ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
1๏ธโฃ readFileSync : ๋๊ธฐ ๋ฒ์
readFileSync(path: string): Buffer
import {readFileSync} from 'fs'
const buffer: Buffer = readFileSync('./package.json')
// ํ์ผ์ ๋ค ์ฝ์ด์ฌ ๋๊น์ง ์ฝ๋๋ ์ผ์์ ์ผ๋ก ๋ฉ์ถ๋ค.
const content: string = buffer.toString()
console.log(content)
// package.json ํ์ผ์ ํ
์คํธ ๋ด์ฉ
2๏ธโฃ readFIle : ๋น๋๊ธฐ ๋ฒ์
โฐ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์ด ์์ธ๋ฅผ ์ฝ๋ฐฑ ํจ์์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์ ๋ฌํ๋ค.
readFile(ํ์ผ ๊ฒฝ๋ก, ์ฝ๋ฐฑ ํจ์: (error: Error, buffer: Buffer) => void)
import {readFile} from 'fs'
readFile('./package.json', (err: Error, buffer: Buffer) => {
if(err) throw err // ์ค๋ฅ ๋ฐ์ ์ ์ฒ๋ฆฌ ์ฝ๋
else {
const content: string = buffer.toString()
console.log(content)
// package.json ํ์ผ ๋ด์ฉ
}
})
// ์ฝ๋๋ ๋ฉ์ถ์ง ์๊ณ ๊ณ์ ์คํ
โฐ package.json ํ์ผ์ ์ฝ๋ ๊ฒฐ๊ณผ๋ readFile() ํจ์์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ธ ์ฝ๋ฐฑ ํจ์๋ก ์ ๋ฌ๋๋ค.
๐ ๋จ์ผ ์ค๋ ๋์ ๋น๋๊ธฐ API
โฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋จ์ผ ์ค๋ ๋๋ก ๋์ํ๋ฏ๋ก, ๋ ์ ์์ผ๋ฉด ๋๊ธฐ API๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ๋ค.
โฐ ํ์ ์คํฌ๋ฆฝํธ ๋ํ ES5 ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณํ๋์ด ์คํ๋๋ฏ๋ก ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
โ ๋จ์ผ์ค๋ ๋?
โฐ ์ค๋ ๋ : CPU๊ฐ ํ๋ก๊ทธ๋จ์ ๋์์ํค๋ ์ต์ ๋จ์
โฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ ํญ์ ํ ๊ฐ์ ์์ ์ค๋ ๋์์ ์คํ๋๋ค.
โฐ ํ์ ์คํฌ๋ฆฝํธ์์ ๋๊ธฐ API๊ฐ ์คํ๋๋ฉด, ๋๊ธฐ API๊ฐ ์คํ๋ ์ฝ๋๋ฅผ ์ผ์์ ์ผ๋ก ๋ฉ์ถ ๋ค์, ๋ค๋ฅธ ์ค๋ ๋์์ ์ค์ ์์ ์ ์คํํด ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ฉด ๊ทธ๋์์ผ ๋น๋ก์ ๋ฉ์ท๋ ๋๊ธฐ API๋ฅผ ์คํํ๋ฉด์ ๊ฒฐ๊ด๊ฐ์ ๋ฐํํ๋ค.
โฐ ์ด๋ฐ ๋์ ๋ฐฉ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ฝ๊ฒ ํด์ฃผ์ง๋ง, ํ๋ก๊ทธ๋จ์ ๋ฐ์์ฑ์ ๋จ์ด๋จ๋ฆฐ๋ค.
๐ ์ฝ๋ฐฑ ์ง์ฅ
โฐ ๋น๋๊ธฐ API๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ฐฑ ํจ์์์ ๋ค์ ๋ ๋ค๋ฅธ ๋น๋๊ธฐ API๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ฅผ ๋ง๋ค ๋๊ฐ ์๋ค.
โฐ ์ด๋ฐ ๋ณต์กํ ํํ๋ก ์ฝํ ์ฝ๋ฐฑ ๊ตฌ์กฐ๋ฅผ ์ฝ๋ฐฑ ์ง์ฅ์ด๋ผ๊ณ ํ๋ค.
โฐ ์ด๋ฐ ์ฝ๋๋ฅผ ์ข ๋ ๋ค๋ฃจ๊ธฐ ์ฌ์ด ์ฝ๋๋ก ๋ง๋ค๊ธฐ ์ํด 'Promise' ๊ฐ ๋ฑ์ฅํ๋ค.
๐ฃ Promise ์ดํดํ๊ธฐ
โ๏ธ ์๋ฐ์คํฌ๋ฆฝํธ์์ ํ๋ก๋ฏธ์ค๋ Promise๋ผ๋ ์ด๋ฆ์ ํด๋์ค์ด๋ค.
โฐ Promise ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ new ์ฐ์ฐ์๋ก ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
โฐ ์ด๋, ์ฝ๋ฐฑ ํจ์๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
const promise = new Promise(์ฝ๋ฐฑ ํจ์)
โฐ Promise์ ์ฝ๋ฐฑ ํจ์๋ resolve์ reject๋ผ๋ ๋ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ๋๋ค.
(resolve, reject) => {}
โฐ ํ์ ์คํฌ๋ฆฝํธ์์ Promise๋ ์ ๋ค๋ฆญ ํด๋์ค ํํ๋ก ์ฌ์ฉํ๋ค.
const numPromise: Promise<number> = new Promise<number>(์ฝ๋ฐฑ ํจ์)
new Promise<T>((
resolve: (sucessValue: T) => void,
reject: (any) => void)
) => {
//...
}
๐ resolve์ reject ํจ์
// readFile์ ํธ์ถํ๋ ๋ด์ฉ์ ํ๋ก๋ฏธ์ค๋ก ๊ตฌํํ ์
import {readFile} from 'fs'
export const readFilePromise = (filename: string): Promise<string> =>
new Promise<string>((
resolve: (value: string) => void,
reject: (error: Error) => void) => {
readFile(filename, (err: Error, buffer: Buffer) => {
if(err) reject(err)
else resolve(buffer.toString())
})
})
โฐ ์๋ฌ๊ฐ ๋ฐ์ํ ๋๋ reject(err) ํจ์๋ฅผ ํธ์ถํ๊ณ , ์ ์์ ์ผ๋ก ์คํ๋์์ ๋๋ ํ์ผ ๋ด์ฉ์ด ๋ด๊ธด buffer๋ฅผ ์ด์ฉํด resolve(buffer) ํจ์๋ฅผ ํธ์ถํ๋ค.
// ์์์ ๊ตฌํํ readFilePromise ํจ์๋ฅผ ์ฌ์ฉํ๋ ์
import {readFilePromise} from './readFilePromise'
readFilePromise('./package.json')
.then((content: string) => {
console.log(content) // package.json ํ์ผ์ ์ฝ์ ๋ด์ฉ
return readFilePromise('./tsconfig.json')
})
.then((content: string) => {
console.log(content) // tsconfig.json ํ์ผ์ ์ฝ์ ๋ด์ฉ
// catch ์ชฝ ์ฝ๋ฐฑํจ์์ ์ค๋ฅ ๋ฉ์์ง ์ ๋ฌ
return readFilePromise('.')
})
.catch((err: Error) => console.log('error:', err.message))
.finally(() => console.log('ํ๋ก๊ทธ๋จ ์ข
๋ฃ'))
โฐ resolve ํจ์๋ฅผ ํธ์ถํ ๊ฐ์ then ๋ฉ์๋์ ์ฝ๋ฐฑํจ์ ์ชฝ์ ์ ๋ฌ๋๊ณ , reject ํจ์๋ฅผ ํธ์ถํ ๊ฐ์ catch๋ฉ์๋์ ์ฝ๋ฐฑ ํจ์ ์ชฝ์ ์ ๋ฌ๋๋ค.
โฐ ๋ง์ง๋ง์ 'ํ๋ก๊ทธ๋จ ์ข ๋ฃ'๋ผ๋ ์ถ๋ ฅ์ด ๋์ค๋ฉด ์ด๋ finally ๋ฉ์๋๊ฐ ํธ์ถ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
โฐ Promise ๊ฐ์ฒด์ ๋ฉ์๋ ์ฒด์ธ ์ฝ๋์์ finally๋ ํญ์ ๋ง์ง๋ง์ ํธ์ถ๋๋ค.
๐ Promise.resolve ๋ฉ์๋
โฐ Promise ํด๋์ค๋ resolve๋ผ๋ ํด๋์ค ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
โฐ ์์ Promise ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํธ์ถํ resolve ํจ์๋ฅผ ํด๋์ค ๋ฉ์๋๋ก ๊ตฌํํ ๊ฒ์ด๋ค.
โฐ Promise.resolve(๊ฐ) ํํ๋ก ํธ์ถํ๋ฉด ํญ์ ์ด '๊ฐ'์ then ๋ฉ์๋์์ ์ป์ ์ ์๋ค.
Promise.resolve(1)
.then(value => console.log(value)) // 1
๐ Promise.reject ๋ฉ์๋
โฐ Promise.reject(Error ํ์ ๊ฐ์ฒด)๋ฅผ ํธ์ถํ๋ฉด ์ด 'Error ํ์ ๊ฐ์ฒด'๋ ํญ์ catch ๋ฉ์๋์ ์ฝ๋ฐฑํจ์์์ ์ป์ ์ ์๋ค.
Promise.reject(new Error('์๋ฌ ๋ฐ์'))
.catch((err: Error) => console.log('error:', err.message))
๐ then-์ฒด์ธ
Promise.resolve(1)
.then((value: number) => {
console.log(value) // 1
return Promise.resolve(true)
})
.then((value: boolean) => {
console.log(value) // true
return [1, 2, 3]
})
.then...
โฐ Promise์ then ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ ์ฝ๋ฐฑ ํจ์๋ ๊ฐ์ ๋ฐํํ ์ ์๋ฐ.
โฐ ์ด then์์ ๋ฐํ๋ ๊ฐ์ ๋ ๋ค๋ฅธ then ๋ฉ์๋๋ฅผ ํธ์ถํด ๊ฐ์ ์์ ํ ์ ์๋ค.
โฐ then ๋ฉ์๋๋ ๋ฐํ๋ ๊ฐ์ด Promise ํ์ ์ด๋ฉด ์ด๋ฅผ resolveํ ๊ฐ์ ๋ฐํํ๊ณ , ๋ง์ฝ reject ๋นํ ๊ฐ์ผ ๋๋ catch ๋ฉ์๋์์ ์ด ๊ฐ์ ์ป์ ์ ์๋ค.
๐ Promise.all ๋ฉ์๋
all(ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ๋ฐฐ์ด: Promise[]): Promise<ํด์๋ ๊ฐ๋ค์ ๋ฐฐ์ด(ํน์ any)>
โฐ Promise ๊ฐ์ฒด๋ค์ ๋ฐฐ์ด ํํ๋ก ๋ฐ์, ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก resolve๋ ๊ฐ๋ค์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ค๋ค.
โฐ ์ด ๋ด์ฉ์ผ๋ก ๊ตฌ์ฑ๋ ๋ ๋ค๋ฅธ Promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฏ๋ก, resolve๋ ๊ฐ๋ค์ ๋ฐฐ์ด์ then ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ป์ด์ผ ํ๋ค.
โฐ ๋ฐฐ์ด์ ๋ด๊ธด Promise ๊ฐ์ฒด ์ค ํ๋๋ผ๋ reject ๋๋ฉด ๋ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ํด๋น ๊ฑฐ์ ๊ฐ์ ๋ด์ Promise.reject ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
๐ Promise.race ๋ฉ์๋
race(ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ๋ฐฐ์ด: Promise[]): Promise<๊ฐ์ฅ ๋จผ์ ํด์๋ ๊ฐ์ฒด์ ๊ฐ ํ์
(ํน์ Error)>
โฐ ๋ฐฐ์ด์ ๋ด๊ธด ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ์ค ํ๋๋ผ๋ resolve ๋๋ฉด ์ด ๊ฐ์ ๋ด์ Promise.resolve ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
โฐ ๊ฑฐ์ ๊ฐ์ด ๊ฐ์ฅ ๋จผ์ ๋ฐ์ํ๋ฉด Promise.reject ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. (ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ๋ฐฐ์ด์ ๋งจ ์ฒ์์ด reject์ผ ๊ฒฝ์ฐ)
๐ฃ async์ await ๊ตฌ๋ฌธ
๐ await ํค์๋
โฐ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐํํด ์ค๋ค.
โฐ ๋ง์ผ ํผ์ฐ์ฐ์๊ฐ Promise ๊ฐ์ฒด์ด๋ฉด then ๋ฉ์๋๋ฅผ ํธ์ถํด ์ป์ ๊ฐ์ ๋ฐํํด ์ค๋ค.
let value = await Promise ๊ฐ์ฒด ํน์ ๊ฐ
๐ async ํจ์ ์์ ์
โฐ await ํค์๋๋ ํญ์ async๋ผ๋ ์ด๋ฆ์ ํจ์ ์์ ์๊ฐ ์๋ ํจ์ ๋ชธํต์์๋ง ์ฌ์ฉํ ์ ์๋ค.
// ํ์ดํ ํจ์
export const test1 = async() => {
let value = await 1
console.log(value) // 1
value = await Promise.resolve(1)
console.log(value) // 1
}
// function ํจ์
export async function test2(){
let value = await 'hello'
console.log(value) // hello
value = await Promise.resolve('hello')
console.log(value) // hello
}
test1()
test2()
// 1
// hello
// 1
// hello
โฐ ๋ ํจ์๊ฐ ๋ง์น ๋์์ ์คํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
๐ async ํจ์์ ๋ ๊ฐ์ง ์ฑ์ง
โ๏ธ ์ผ๋ฐ ํจ์์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
โ๏ธ Promise ๊ฐ์ฒด๋ก ์ฌ์ฉํ ์ ์๋ค.
โฐ ์ ์ฝ๋๋ async ํจ์๋ฅผ ์ผ๋ฐ ํจ์์ฒ๋ผ ์ฌ์ฉํ ์์ด๋ค.
โฐ ๋ฐ ์ฝ๋๋ async ํจ์๋ฅผ Promise ๊ฐ์ฒด๋ก ์ฌ์ฉํ ์์ด๋ค.
test1()
.then(() => test2())
// 1
// 1
// hello
// hello
โฐ test1() ํจ์ ํธ์ถ์ด resolve๋ ๋ค์์ ๋น๋ก์ test2() ํจ์๋ฅผ ํธ์ถํ๋ฏ๋ก ์คํ ๊ฒฐ๊ณผ๊ฐ ์ฐจ๋ก๋๋ก ๋์จ๋ค.
๐ async ํจ์๊ฐ ๋ฐํํ๋ ๊ฐ์ ์๋ฏธ
โฐ async ํจ์๋ ๊ฐ์ ๋ฐํํ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ฐํ๊ฐ์ Promise ํํ๋ก ๋ณํ๋๋ฏ๋ก ๋ค์์ฒ๋ผ then ๋ฉ์๋๋ฅผ ํธ์ถํด async ํจ์์ ๋ฐํ๊ฐ์ ์ป์ด์ผ ํ๋ค.
const asyncReturn = async() => {
return [1, 2, 3]
}
asyncReturn()
.then(value => console.log(value)) // [1, 2, 3]
๐ async ํจ์์ ์์ธ ์ฒ๋ฆฌ
const asyncException = async() => {
throw new Error('error')
}
asyncException() // ์์ธ ๋ฐ์
โฐ async ํจ์์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค.
โฐ ์ด๋ฅผ ๋ง๊ธฐ ์ํด์๋ asyncException์ ๋จ์ํ ํจ์ ํธ์ถ ๋ฐฉ์์ด ์๋ asyncException()์ด ๋ฐํํ๋ ํ๋ก๋ฏธ์ค ๊ฐ์ฒด์ catch ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ํํ๋ก ์์ฑํด์ผ ํ๋ค.
const asyncException = async() => {
throw new Error('error')
}
asyncException()
.catch(err => console.log('error:', err.message)) //error: error
โฐ await ๊ตฌ๋ฌธ๋ ๋ง์ฐฌ๊ฐ์ง
const awaitReject = async() => {
await Promise.reject(new Error('error'))
}
awaitReject()
.catch(err => console.log('error:', err.message)) // error: error
โฐ await ๊ตฌ๋ฌธ์์ Promise.reject ๊ฐ์ด ๋ฐ์ํ์ ๋, ํ๋ก๊ทธ๋จ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒ์ ๋ง์ผ๋ ค๋ฉด catch ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ผ ํ๋ค.
๐ async ํจ์์ Promise.all
import {readFilePromise} from './readFIlePromise'
const readFilesAll = async(filenames: string[]) => {
return await Promise.all(
filenames.map(filename => readFilePromise(filename))
)
}
readFilesAll(['./package.json', './tsconfig.json'])
.then(([packageJson, tsconfigJson]: string[]) => {
console.log('<package.json>: ', packageJson)
console.log('>tsconfig.json>: ', tsconfigJson)
})
.catch(err => console.log('error:', err.message))
โฐ readFilesAll ํจ์๋ ๋งค๊ฐ๋ณ์ filenames์ ๋ด๊ธด string[] ํ์ ๋ฐฐ์ด์ map ๋ฉ์๋๋ฅผ ์ ์ฉํด์ Promise[] ํ์ ๊ฐ์ฒด๋ก ๋ง๋ ๋ค.
โฐ ๊ทธ ๋ค์, ์ด๋ฅผ ๋ค์ Promise.all ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋จ์ผ Promise ๊ฐ์ฒด๋ก ๋ง๋ ๋ค.
โฐ ์ด ๊ฒฐ๊ณผ๋ก ๋ง๋ค์ด์ง ๊ฐ์ฒด์ await ๊ตฌ๋ฌธ์ ์ ์ฉํด resolve๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
โฐ readFilesAll ํจ์๋ฅผ Promise ๊ฐ์ฒด๋ก ์ทจ๊ธํด์ then๊ณผ catch ๋ฉ์๋๋ฅผ then- ์ฒด์ธ ํํ๋ก ์ฐ๊ฒฐํ๋ค (์๋ฌ๊ฐ ๋ฐ์ํด๋ ๋น์ ์์ ์ธ ์ข ๋ฃ๊ฐ ์ผ์ด๋์ง ์๋๋ค)
'Study > TypeScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TS] Exercises 1~3 (0) | 2023.07.18 |
---|---|
[TS] ํจ์ ์กฐํฉ์ ์๋ฆฌ์ ์์ฉ (0) | 2023.02.09 |
[TS] ๋ฐ๋ณต๊ธฐ์ ์์ฑ๊ธฐ (0) | 2023.02.03 |
[TS] ๋ฐฐ์ด๊ณผ ํํ (2) | 2023.02.02 |
[TS] ํจ์์ ๋ฉ์๋ (0) | 2023.02.01 |