728x90
저번 포스팅에서 promise를 사용해서 동기화를 하는 예제를 보았다.
그런데 문제는 promise사용도중에 에러가 나면 어떻게 처리하느냐이다.
이번에는 에러처리를 하는 예제를 보도록 하자.
파일의 구조는 위와 같다.
var axios = require('axios');
var fs = require('fs');
var filename = 'text.txt';
var text = null;
function f1(filename) {
return new Promise((resolve, reject) => {
text = fs.readFile(filename, 'utf8', (err, data) => {
console.log(err)
console.log(data);
if (err === null) {
resolve(data);
} else {
reject(err);
}
});
})
}
function f2(data) {
return new Promise((resolve, reject) => {
console.log('에러없이 데이터 전송됨');
console.log(data);
});
}
function f3(err) {
return new Promise((resolve, reject) => {
console.log('에러 발생됨');
console.log(err);
});
}
f1(filename)
.then(f2)
.catch(f3);
전체 코드이다. 나눠서 보도록하자.
var fs = require('fs');
var filename = 'text.txt';
var text = null;
파일 입출력을 하기 위해서 위와 같은 구조를 사용하도록 하자.
function f1(filename) {
return new Promise((resolve, reject) => {
text = fs.readFile(filename, 'utf8', (err, data) => {
console.log(err)
console.log(data);
if (err === null) {
resolve(data);
} else {
reject(err);
}
});
})
}
파일을 읽어들인다. 만약 에러가 없다면 resolve를 실행한다.
그러나 에러가 있다면 reject를 실행한다.
function f2(data) {
return new Promise((resolve, reject) => {
console.log('에러없이 데이터 전송됨');
console.log(data);
});
}
function f3(err) {
return new Promise((resolve, reject) => {
console.log('에러 발생됨');
console.log(err);
});
}
f2는 resolve로 쓸 함수이고, f3은 reject로 쓸 함수이다.
이제 실행코드를 보자.
f1(filename)
.then(f2)
.catch(f3);
이렇게 원래 캐이스는 f2를, 실패 캐이스는 f3을 해준다.
text.txt는 hihihi라는 데이터가 들어가 있다.
만약 파일이 존재한다면 위와 같이 작동한다.
파일을 지우고 실행해보면 위와같이 에러 케이스가 작동하는걸 확인할 수 있다.
'Usage > JavaScript' 카테고리의 다른 글
[RESTful][ajax]jquery ajax사용법 - (2) (0) | 2019.01.13 |
---|---|
[RESTful][ajax]ajax란? XMLHttpRequest사용법 - (1) (0) | 2018.12.28 |
[Cordova][Ionic][Vue][JavaScript]vue로 ionic사용하기 (0) | 2018.09.30 |
[Package][Promise]Promise와 js에서의 동기화 - (1) (0) | 2018.09.23 |
[Package]Glyphicons를 대체할 새로운 픽토그램 패키지, Font Awesome (0) | 2018.05.27 |