1. Promise를 왜 쓰는가?
- 비동기 함수들을 사용할 때 콜백 함수를 너무 많이 사용하면 복잡해서 읽기가 매우 힘들다.
- 그래서 자바스크립트 내장 메서드 'promise'를 쓴다.
2. Producer
const proise = new Promise((resolve, reject) => {
console.log('Doing Someting');
setTimeout(() => {
resolve('name')
reject(new Error('No Name'))
}, 2000);
});
- Promise는 class다. 그래서 일단 new를 사용해 만들게 된다.
- resolve는 기능이 정상적으로 돌아가 마지막에 리턴할 함수 => 위의 예시에서 보이듯이 알맞은 인자를 전달해 준다.
- reject는 기능이 돌아가다가 뭔가 오류가 생겼을 때 리턴할 함수
3. Consumers
- 위에서 만들어 놓은 promise를 이용하는 방법이 된다.
promise
.then((value) => {
console.log(value); // name
})
.catch(error => {
console.log(error)
})
.finally(() => {
console.log('End')
});
- 위의 예시에서 then은 기능이 올바르게 작동한다면 나오게 될 기능을 하게 된다. 이때, value는 우리가 promise에서 resolve라는 콜백 함수로 전달한 값인 'name'이 전달되게 된다.
- 만약 문제가 생긴다면? reject로 준 Error가 발생한다.
- 문제가 발생해서 reject 콜백 함수가 사용되면, then이 promise를 다시 불러오게 되고, 그 불러온 promise에 catch를 다시 등록시키게 된다. 그러면 에러가 발생했을 때, 그것을 다시 잡아와 catch안에서 사용하게 된다. 이를 '체이닝'이라고 한다.
- finally는 가장 마지막에 에러가 발생하든, 올바르게 실행되든 상관없이 실행된다.
4. fs.readFile()
- 비동기적으로 파일을 읽어 온다는 의미이다.
fs.readFile('읽어올 파일의 경로', 'utf8(옵션, 대부분 utf8)', (err, data) => {
if(err) {
throw err; // 문제가 있다면 err를 던진다!
}
console.log(data); // 문제가 없다면 콘솔에 data를 입력한다.
})
- 파일의 불러올 방식으로는 주로, 'utf8'이 사용된다. 사람이 읽을 수 있는 언어로 만들어주는 느낌이다.
- 콜백 함수에서 err가 발생하지 않으면 자동으로 null이 되며, data에 내용이 전달된다.
'Coding > Today I Learned' 카테고리의 다른 글
2021.07.29(Thu.) <HTTP와 네트워크 기초중에 기초> (0) | 2021.07.29 |
---|---|
2021.07.28(Wen.) <Async & Await의 기초> (0) | 2021.07.29 |
2021.07.26(Mon.) <동기 비동기의 간단한 설명> (0) | 2021.07.27 |
2021.07.24(Sat.) <Graph 형태의 자료구조> (0) | 2021.07.25 |
2021.07.22(Thu.) <Stack & Queue> (0) | 2021.07.22 |