Promise가 실패할 때
Coddy Node.js 여정의 Node.js 기초 섹션에 포함된 레슨. 33개 중 20번째.
예를 들어 파일이 존재하지 않을 때 프라미스가 실패할 수도 있습니다. 이를 거부라고 합니다. .catch는 실패했을 때 실행할 코드를 제공합니다. .finally는 성공하거나 실패한 뒤에 실행되므로 마무리 메시지를 표시할 때 유용합니다.
readFile('weather.txt', 'utf8')
.then((text) => console.log(text))
.catch(() => console.log('No file'))
.finally(() => console.log('Finished'));읽기에 실패하면 성공 콜백은 건너뜁니다. 이 예제는 No file을 출력한 다음 Finished를 출력합니다. 실패 메시지는 catch에 넣어야 하므로, 읽기에 성공하면 실패 메시지가 출력되지 않습니다.
챌린지
쉬움먼저 practice.js를 실행하세요. 파일이 없어서 처리되지 않은 ENOENT 오류가 발생합니다.
읽기에 성공했을 때의 콜백은 유지하세요. 실패하면 No notes yet를 출력하도록 .catch를 추가한 다음, 어느 결과에서든 Done을 출력하도록 .finally를 추가하세요. 인수가 없으면 출력되는 줄은 No notes yet와 Done입니다. note.txt를 사용해 보세요. 출력되는 줄은 Buy milk와 Done입니다.
직접 해보기
import { readFile } from 'node:fs/promises';
readFile(process.argv[2] ?? 'missing.txt', 'utf8').then((text) => console.log(text));
Node.js 기초의 모든 레슨
4비동기 Node
콜백 결과 사용하기콜백Promise 결과Promise가 실패할 때Promise값 기다리기Async와 Await서로 독립적인 두 번의 읽기Promise.all이벤트 루프타이머직접 연습해 보세요: Express 플레이그라운드