async/await가 비동기를 동기적으로 처리하기 위한 목적이라는데 "비동기를 동기적으로 처리"라는 말이 헷갈립니다
예를 들면 getUser()라는 함수를 호출시
사이트에서 사용자정보를 가져와야 한다고 할때
"사용자정보를 가져온다 -> 사이트에 보여진다"
가 getUser()에 기능이라 할때
-비동기로 처리시:
'가져오기전에' 다음코드가 실행되어 사이트에는 undefined 라고 뜬다.
-async/await 를 사용할시:
가져올때까지 기다리다가(await) 가져오면 사이트에 보여지게 한다.
이렇게 이해했는데 여기서 getUser()만이 아니라 사이트에는 광고나 UI나 이런것도 로딩해야되는데,
정보를 받아오는 중에도 UI나 다른요소나 작업은 로딩이 다 되어야 하잖아요
동기적으로 처리하면 정보를 받아오기전까지 흰 화면이 뜨다가 정보를 다 가져오고 함수가 끝나야 그때서야 다른것들도 로딩 하는거잖아요
"비동기를 동기적으로 처리"한다는 것은 getUser가 종료되어야 다음코드가 실행되는게 아니라,
getUser안에서의 '가져온다'라는 비동기코드의 결과가 반환되고 '보여진다'코드가 실행되게끔 동기적으로 실행된다는거죠?
함수밖에 다른것들은 실행되고 있고요
• getUser()호출 -> getUser안에서 정보 가져올때까지 가만히 있음 -> await이후 코드 실행 -> 화면에 보여짐 -> 다른 작업들 실행
이게 아니라
• getUser() 호출 -> 다른 작업들 실행 -> getUser안에서 정보를 가져옴 -> await이후 코드 실행 ->화면에 보여짐
맞나? 머리로만 이해하려하니 힘드네 ㅠㅠ
뭔가 로딩할때 그냥 코드짜면 그거 끝날때까지 기다려야하자나 async await 쓰면 기다리지 않고 걔는 따로 돌리고 다음 코드로 넘어가는거임 입출력 인터럽트랑 비슷한 개념이라고 생각하면됨
다른 작업이나 화면 작업 같은 건 빼고 이해해라
비동기를 동기적으로 처리한다라는게 아니고 비동기적으로 처리하는데 코드가 동기적처럼 보인다가 맞지
getUser끝나는 시점에 콜백으로 나머지 달아둔다고 생각하면 편함
동기 비동기 블락 넌블락 찾으면 상위에 좋은글 하나 있는데 그거 함 보심 도움 많이 됩니다
답변 감사합니다 직접 써봐야 완벽히 이해가 될것같아요
async function 내에서 순차 처리하고 나머지 부분에서는 상관없이 계속 돌아가는거지