[Javascript] 콜백(Callback)

JUNHO YEOM·2022년 7월 7일
0

Javascript

목록 보기
4/9

콜백(callback)함수 란?

다른 함수가 실행을 마친 뒤, 그다음에 실행 하는 함수.
자바스크립트에서 함수는 객체이다. 따라서 함수는 함수를 인자로 받고
다른 함수를 통해 반환될 수 있다. 이때, 인자로 대입되는 함수를 콜백함수라고 한다.


비동기처리: 요청한 응답이 돌아오기 전이라도 다음 요청을 처리하는것
동기처리: 먼저 요청한 응답이 돌아온 후 다음 요청을 처리하는것


비동기적 함수의 특징

자바스크립트는 함수에 따라 동기적 실행을 하기도 하고, 비동기적 실행을 하기도 한다.
자바스크립트는 비동기 실행을 할때, 이벤트의 값이 반환될 때 까지 기다리지 않고 다음의 이벤트를 계속 실행한다.
따라서 API요청과 같은 비동기적인 함수를 실행할 경우 특별한 처리를 해주지 않으면
함수를 원하는 대로 실행하기 어렵다.


비동기 처리를 위한 방법

콜백

비동기 처리를 위해 콜백함수를 이용하는 방법
비동기 처리를 할 수 있지만, 코드를 계속해서 중첩하며 작성하게 된다.
예외, 에러처리가 어렵고, 복잡도가 증가하며, 콜백지옥이라는 현상이 나타나게 된다.


promise

어떤 시점에 결과를 제공하겠다는 약속(Promise)를 반환하는것


async & await

async와 await을 이용해 비동기 처리를 하는 방식으로 코드의 가독성을 높여줄 수 있다.

1| app.post('/tokens/phone', async (req, res) => {
2|   const user_phone = req.body.phone
3|   const result = await Token.findOne({ phone: user_phone })
4|   res.send(result)
  1. 비동기 처리를 하기 위해 async를 사용해준다.
  2. 데이터로 받은 req.body.phone을 user_phone에 할당해준다.
  3. Token DB에서 user_phone 자료를 찾아준다.(비동기로 진행되므로 await처리를 해준다)
  4. result가 처리될 때까지 기다려준 후, res.send(result) 결과가 응답으로 전송된다.

0개의 댓글