JS

허기웅·2024년 1월 12일
0

Promise (then,catch)

동기와 비동기

동기란 작업이 순차적으로 시작하는거 - 하나 시작-하나 끝-둘 시작-둘 끝-...-...

비동기란 작업을 동시에 시작할수 있는거 - 하나,둘,셋 시작-하나끝-셋끝-둘끝(여러개를 동기적으로 수행하면 비효율적이므로)

비동기적을 동기적으로 왜 만드는가 ?

동기적을 사용하면 비효율적이고 비동기적으로 사용하면 효율적이지만 동기적인 부분이 필요할때가 생길수 있어서 부분적으로 비동기적인 작업을 동기적으로 만듬..

Promise는 왜 사용하는가 ?..

Promise 문법을 사용하는 이유는 어떠한 작업을 비동기적으로 처리할 때 그 작업이 성공했는지 실패했는지를 쉽게 정리할 수 있도록 해줌.

ex)

fetch('https://jsonplaceholder.typicode.com/posts/1') - fetch를 주소에서 받아와서 대기(머리만 받아왔음.몸은 나중에. 비동기)
.then(response => response.json()) - Promise 객체만 반환 (머리만 주고 몸은 아직 받는중. 비동기)
.then(json => console.log(json)) - 머리만 콘솔에 찍힘.
.catch(error => console.error('Error:', error)); - 실패시 에러가 찍힘.

왜 response.json()은 Promise 객체를 반환하는 걸까?

이유 : 그게 Promise의 작동 방식이기 때문이다. fetch를 한 후에 날아오는 response 객체는 모든 머리가 도착하자마자 우리에게 주어진다.(몸은 아직 안온것임 머리 없는 몸이 나중에 옴)
그래서 js는 몸을 기다리고 있는 상태인 Promise 객체를 반환.
중간에 기다려서 Promise 객체가 다 끝난 상태를 받고 싶지만 그건 불가능.
Promise를 바로 리턴해버리기 때문

profile
반가워요.

0개의 댓글

관련 채용 정보