TIL(Today I Learned)
3월 1일(수)
공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.
Callback vs Promise vs async/await
- 비동기 작업의 결과를 처리해주기 위해서 Callback이 사용되었다.
- Callback은 nested 될 경우, 코드 가독성이 떨어지고 로직이 복잡해진다.
- 그래서 이를 보완하기 위해 Promise라는 개념이 생겨났다.
- 비동기 함수에서 Promise를 반환하고, Promise는 비동기 작업의 처리 상태를 갖고 있다.
- 또한 then을 통해 비동기 작업이 완료된 이후의 처리를 할 수 있고, catch를 통해 비동기 작업의 예외처리가 가능하다.
- then과 catch를 chaining 함으로써 Callback이 nested되는 복잡한 경우를 방지할 수 있다.
- 그리고 Promise를 더 간단하게 표현하기 위해서 async/await라는 키워드가 생겼다.
- async 키워드는 비동기 함수를 정의하기 위한 키워드이며, Promise를 반환해야한다.
- await는 비동기 함수의 결과를 기다리기 위한 키워드이다. async 함수안에서만 동작하며, 비동기 함수기 실행되는 앞에 붙어야한다.
- 예시)
const asyncFunc = async () => { const response = await fetch(resource); const data = await response.json(); } console.log(1); cosole.log(2); asyncFunc().then(data => console.log(data)); console.log(3); console.log(4); // 실행결과 // 1 // 2 // 3 // 4 // data
express.json()
- express.json()은 express에 내장된 기본 middleware 이다.
- 클라이언트가 json 형식의 request를 받으면 이를 파싱해주기 위해서 express.json()을 use처리 해주어야 한다.
- 예시)
const express = require("express"); const app = express(); app.use(express.json()); app.post('/', function(req, res){ console.log(req.body); res.send(req.body); }); app.listen(3000);
참고 및 예시 출처
- https://www.inflearn.com/course/lecture?courseSlug=%EB%AA%BD%EA%B3%A0%EB%94%94%EB%B9%84-%EA%B8%B0%EC%B4%88-%EC%8B%A4%EB%AC%B4&unitId=63756&tab=curriculum
- https://www.freecodecamp.org/news/asynchronous-javascript-explained/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
- https://hi-zini.tistory.com/entry/%EB%B9%84%EB%8F%99%EA%B8%B0%EC%A0%81-%EB%B0%A9%EC%8B%9D-%EC%B2%98%EB%A6%AC-%EB%B0%A9%EB%B2%95-Callback-Promise-async-await
- https://semtax.tistory.com/7