최대 1 분 소요

0312 TIL

Created By: 성희 배 Last Edited: Mar 12, 2020 11:29 PM

_2020-03-12__11 11 24

  • 데이터를 받아올 때, 두 개를 한번에 받아오다 보니 동기화가 안돼서 한개만 받아와지는 경우가 있었다.

기존 코드

    Restriction.countDocuments({state : 0}, (err, cnt)=>{
        ret.prohibitions = cnt
     }).then(Restriction.countDocuments({state : 1}, (err, cnt)=>{
        ret.restrictions = cnt
     })).then(()=> res.send(ret))
  • .then()으로 감싸다 보니 한 개만 보내지고.. 난리

변경 코드 ```javascript async function fetch(){ const prohibitions = await Restriction.countDocuments({state : 0}) const restrictions = await Restriction.countDocuments({state : 1})

    res.send({
      restrictions : restrictions,
      prohibitions : prohibitions
    })
 } ``` - 해결 방법이 없을까 검색을 해보니 async/await이 있어 사용해 봤다! - 코드도 훨씬 가시적이고, 데이터도 너무 잘 보내짐 👍

Async/await 과 Promise

Promise?

  • .then().then()…
  • 함수 호출 (resolve라고 하나봄) 이후 then()에 걸린 함수 실행

Async/await

  • async 함수(), await 함수()
  • await은 async가 resolve 된 이후 실행

그래서 Promise보다 Async가 나은 이유?

  • 동기적 코드 흐름으로 개발이 가능
  • 코드가 간결해지고, 가독성이 높아진다
  • 응답데이터 (err, data, res 등)를 없앨 수 있음
  • Promise 사용 시 콜백 내는 동기화 가능하지만, 밖의 함수는 동기화 불가

  • 검색 해보니 Promise.all을 사용하면 여러개를 기다릴 수 있었다..ㅎㅎㅎ! 검색 부족이었던걸로..

카테고리:

업데이트: