Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 유효성검사
- 삼성무선청소기제트
- 자동완성
- 정규식
- 맛사지
- plugin
- 정직하게사세요
- 중고거래사기
- Webpack
- ES6
- JavaScript
- 사기
- 해외여행
- 네이버페이사기
- js
- 세부
- webpack.config.js
- 스쿠버다이빙
- 막탄
- 여행
- REACT
- autocomplate
- 마사지
- 구분
- 중고나라
- 중고나라사기
- 스노쿨링
- 특수문자
- Hooks
Archives
- Today
- Total
Ryu.log
[ NodeJS 06 ] 프로미스(Promise) API 본문
01. Promise API
Promise의 API들에 대해 알아보자, 먼저 첫번째로 아래 코드를 보면
const handleMessage = (message) => { return new Promise((resolve, reject) => { resolve(message); }); } const handleMessage2 = (message2) => { console.log(message2); return new Promise((resolve, reject) => { resolve(message2); }) } promise .then(handleMessage) .then(handleMessage2) .then((message3) => { console.log(message3); }) .catch((error) => { console.error(error); })
이전에 콜백 방식때 콜백 지옥을 벗어나기 위해서, 개량된 방식비슷하게 위 같은 방식으로 Promise를 사용 할 수도있다.
하지만 Promise자체적으로 가독성이 나쁘지않기 때문에 필수는 아니고, 이런 방법도 있다 정도로 알자.
두번째는 무조건 성공하거나 무조건 실패하는 Promise의 라인수를 줄이는 방법이다. 아래코드를 보자.
const promise = new Promise((res, rej) => { rej('실패'); }); // 기존에 이런식으로 무조건 성공 or 실패하는 Promise 라면 아래와 같이 코드를 바꿀 수 있다. const successPromise = Promise.resolve('성공'); const failurePromise = Promise.reject('실패');
마지막으로 Promise.all이라는게 있다. 아래 코드를 보자.
Promise.all([Users.findOne(), Users.remove(), Users.update()]) .then((results) => { // ... }) .catch((error) => { //... })
이런식으로 만들었던 Promise함수들을 한곳에 배열로 담은 뒤,
한방에 then이나 catch를 실행할 수 있다.
각각의 결과는 then(result)의 result 값에 배열로 담긴다.
Promise.all은 여러 Promise를 동시에 실행 가능하지만,
만약 하나라도 실패하면 곧장 catch로 빠져버리는 단점이 있다.
만약 Promise를 여러개 동시에 사용 하고싶고, 결과값이 전부 성공한다고 친다면
Promise.all을 사용 하면 된다.
02. Promise 정리
지금까지 Promise에 대해 알아보았는데 Promise를 한문장으로 표현하자면
결과값을 가지고 있지만 .then이나 .catch를 붙히기 전까지는 반환하지 않는 것이다.
기존 콜백 방식과 비교를 한번해서, 간단히 코드로 설명을 해보자!
//기존 콜백방식은 로직내에서 결과값을 출력 해주어야 한다. User.findOne('juno', (err, user) => { console.log(user); }); //-------------------------------------------------------------------------------------- // Promise는 선언해놓고 변수에 담아놓으면 다른 로직을 실컫 실행한 뒤에도 담긴 변수만 호출해서 사용이가능하다. const juno = Users.findeOne('juho'); // 다른로직 // 다른로직 // ...쭈욱 juno.then((user) => { console.log(user); });
Promise는 이런식으로 개발자들이 개발을 함에 있어 조금 더 자유도를 주고,
가독성을 뛰어나게하여 비동기형식의 개발을 조금더 쉽고 직관적으로 도와준다.
'Prev-content' 카테고리의 다른 글
[ NodeJS 08 ] 모듈 시스템 (0) | 2018.07.30 |
---|---|
[ NodeJS 07 ] async / await (0) | 2018.07.27 |
[ NodeJS 05 ] 프로미스(Promise) 이해하기 (0) | 2018.07.25 |
[ NodeJS 05 ] 콜백과 프로미스(Promise) 비교 (0) | 2018.07.24 |
[ NodeJS 04 ] 이벤트 기반, 싱글쓰레드, 논블러킹I/O (0) | 2018.07.12 |
Comments