[js] async와 await 제대로 알고 있었늬!?
async를 요러케 작성해서 쓸 수 있는데, 요렇게 쓸 경우 getApple과 getBanana가 순차적으로 (1초 +1초)로 실행이 된다.
1초 끝나고, 1초 기다려가 아니라
동시에 getApple과 getBanana가 실행되게 하려면 아래와 같이 수정하기
Promise.all을 이용하면
동기와 비동기의 차이가 뭔지 아늬?!
- 동기 : 모든 일의 진행이 순서대로 일어남
- 비동기 : 비동기 함수의 경우 비동기 함수를 호출한 스레드에서 해당 함수 호출에 대한 결과를 기다리지 않고 바로 다음 작업을 수행할 수 있는 것
async와 await는 붙어 다니는데, async가 비동기고 await가 단어 그대로 기다린다 라는 뜻이고 await의 주체가 되는 함수에 async를 붙여줘야 한다.
await 함수들이 끝나고나서야 async가 Return이 되는 것
- 일의 순서를 정해주기 위해서 쓸수잇는 방법이 await
await가 실행이 다 되고나서야 아래 함수들이 실행되라!! 라고 await를 쓰는 것
저게 끝낫다면, 다음줄로 넘어가라라고 하는것
await axios.get은 promise 객체를 토해내는데, 비동기통신의 return값은 promise '객체'다
객체는 항상 Key, value가 있는데 promise는 객체이다.
promise도 .해서 접근할 수 잇는데, 그 중 하나가 then이 있다. ~~.then (await가 끝나면 그 뒤에 수행되어라)
axios.get("").then().catch().finally(성공햇거나실패햇거나무조건들어와라)
랑 await axios.get이랑 같은 의미인것!!