티스토리 뷰
프로미스 => 비동기
- 프로미스란 자바스크립트의 비동기처리에서 사용되는 객체
- 여기서 자바스크립트의 비동기 처리란 ‘특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성’
- 프로미스는 주로 서버에서 받아온 데이터를 처리할때 사용합니다.
- fetch등으로 서버에서 데이터를 요청하고 다 받아온후에 처리하기위에 (동기적으로) promise를 실행
차이점 ?
- 콜백지옥으로, 가독성이 떨어지는 점을 프로미스가 보완해주며
- 콜백은 비동기의 결과값을 콜백함수내에서 처리해야한다. 콜백 밖에서는 비동기에서 온 값을 알 수가 없다.
- 콜백의 경우 매번 비동기를 실행해야지 그 값을 사용(?)할 수 있지만 프로미스는 .then 메소드를 통해서 저장되어 있는 값을 원하는 때에 사용할 수 있다
비동기 부가설명
자바스크립트는 싱글스레드다. 멀티가안되며 동기와 비동기라는 개념이 있다.
비동기란 오래걸리는 함수를 만나면 다른것부터 실행하는것을 비동기라고한다.
비동기 => 동기적으로 실행하게하기위해
콜백함수 사용한다. 브라우저의 동작원리를 이해해야한다.
변수가 저장되는 heap이라는 공간, 코드를 실행시켜주주는 콜스택이있다. 콜스택은 한번에 한줄의 코드만 실행시킨다. 전문용어로 싱글스레드
기다림이 필요한 특수함수들 ajax요청, 이벤트핸들러 , setTimeout등은 콜스택으로 바로 올라가지 않는다.
대기실인 콜백큐에 가게되고 이벤트루프에의해서 콜스택으로 옮겨지게된다. 여기서 주의해야할점은 이벤트루프는 콜스택이 비워져있는지를 확인하고 비워져있어야지만 콜스택으로 한개씩 옮긴다.
근데 콜백을 사용하면? 특정 코드가 끝나기 전까지는 다른 코드가 실행되지 않는다. => 오래걸리는함수들도 동기적으로 만들어줌
이것들은 비동기의 문제점을 눌러주려고 쓰는것..동기적으로 차근히 실행해주셈
차이점!!
콜백은 비동기의 결과값을 콜백함수내에서 처리해야한다. 콜백 밖에서는 비동기에서 온 값을 알 수가 없다.
콜백의 경우 매번 비동기를 실행해야지 그 값을 사용(?)할 수 있지만 프로미스는 .then 메소드를 통해서 저장되어 있는 값을 원하는 때에 사용할 수 있다.
또, 콜백지옥서 구원하여 좀더 간결하게 코드를 작성할수있다.