sleepingsand
150
2021-09-16 16:33:43
2
120

비동기 await async 질문이 있습니다.


제가 조금 공부하면서 정리한 내용인데, 이 3가지 정리한 문장이 모두 맞는 사실인지 궁금합니다.


- 비동기 형식에서의 콜백함수는 어떠한 요청(e.g. 서버에서 내가 요청한 응답값을 받아오기)이 끝난 이후 에 실행되는 함수


- await를 이용하게 되면 콜백함수를 만들지 않고 비동기 처리를 해줄 수가 있다.

 왜냐하면 async함수내에서의 await 부분은 promise 객체가 처리(서버에서 내가 요청한 응답값을 받아옴) 될 때까지 대기한 이후에 실행되기 때문. 


- 콜백함수의 역할을 await가 대신함. 그런데 요즘에는 await 를 더 많이 사용. 그 이유는 가독성,콜백지옥 때문.


다 맞는 말인가요?

0
  • 답변 2

  • 멘탈조각
    1k
    2021-09-16 17:55:52 작성 2021-09-16 17:56:20 수정됨

    단순히 가독성이나 콜백지옥때문에 await를 쓰지는 않습니다.

    그러다가 애플리케이션 죽어서 난리나요.

    await를 쓰는 이유는 async한 작업을 강제로 동기적으로 실행시키기 위해서 입니다.

    순차적으로 실행되어야 하는 작업들을 가독성 좋게 작성하기 위해서 await를 쓰는거지 그 반대의 목적으로 쓰면 안됩니다.

    예를들어서 다음과 같은 코드를 가독성을 위해서 

    login(userData).then(({data}) => {
        getSession(data.credential).then(({data}) => {...}).catch((error) => {...});
    }).catch((error) => {...});

    이렇게 쓰는겁니다.

    async function loginAndGetSeesion(userData) {
        return await getSession(await login(userData));
    } loginAndGetSeesion(userData) .then((session) => {...}) .catch((error) => {...});



  • sleepingsand
    150
    2021-09-17 07:25:44
  • 로그인을 하시면 답변을 등록할 수 있습니다.