위의 예시에서 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에 내용이 전달된다.