일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 생성자
- Node.js
- push함수
- git
- qqOperater
- DB
- Spring
- dart
- React
- 추상클래스
- 다형성
- 배열
- app.use
- 삼항연산자
- mybatis
- Middleware
- 자바
- 오류
- 코딩테스트
- 콘솔게임
- 리액트
- 네임드생성자
- 자바스크립트
- Pug
- js
- int와 integer
- Oracle
- 깃허브
- java
- Sort()
- Today
- Total
평행코드
Async Await의 등장 (Callback function 콜백함수, Promise) 본문
자바스크립트의 단점은 기다리는 기능이 없어서 아무리 위에서 아래로 읽어도
데이터베이스에서 불러오는 시간이 있어 순서가 뒤죽박죽 될 수 있습니다.
자바스크립트는 동기적이고 한 번에 하나의 일만 처리할 수 있습니다.
그래서 데이터를 다 불러오면 그때서야 다음에 있는 코드를 실행할 수 있는 콜백함수를 사용하였습니다.
콜백함수 (함수안에 함수)
콜백함수의 장점은 에러들을 바로 볼 수 있어서 에러관리가 쉽다는 것이있지만,
콜백지옥이라는 말이 있을 정도로 if, else로 반복이되어 코드가 지저분해지고,
유지보수가 힘들다는 단점이 있습니다.
그래서 등장한 것이 Promise입니다.
Promise의 등장
Promise는 기본적으로 하는 일이 콜백함수와 같지만,
콜백처럼 특정 작업이 끝난 후 함수 실행이 아닌
Video.find().then()이라는 자체 메소드로 코드를 더 쉽고 간결하게 쓸 수 있다는 장점이 있습니다.
그 이후 await, async가 생기면서 또 한번 달라졌습니다! ( node.js 7.6 버전부터 )
await는 데이터베이스에게 결과값을 받을 때 까지 자바스크립트가 기다리게 해줄 수 있습니다.
await, async의 장점은 매우 직관적이라는것 즉 자바스크립트가 어디서 어떻게 기다리는지 알 수 있습니다.
promise보다 더 쉬운 비동기적인 상황을 코드로 한눈에 볼 수 있습니다.
하지만 콜백함수와 달리 promise방식은 에러가 어디서 오는지 명확하지가 않아서 try catch를 사용합니다.
말그대로 try안에 있는 코드를 실행하고 오류가 생기면 catch 안에 코드가 실행되는 구조입니다.
export const home = async (req, res) => {
try{
const videos = await Video.find({})
return res.render("home", { pageTitle: "Home", videos });
} catch {
return res.render("server-error");
}
};
위에 코드에서 보듯이 function 앞에 async를 써주고,
그 함수안에 await를 써주면 됩니다.
'Node js' 카테고리의 다른 글
6/7 node.js static, 정렬 req.query (0) | 2023.06.08 |
---|---|
Mongoose ( 스키마와 모델 ) (0) | 2023.05.31 |
Window에서 Chocolatey로 Mongodb설치하기! (mongod는 입력되지만 mogo가 입력되지 않는다면? mongodb shell을 설치하자!) (0) | 2023.05.31 |
req.body / express.urlencoded (0) | 2023.05.31 |
Mixins, HTML 코드를 재사용하는 방법 (0) | 2023.05.30 |