일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 맥북백틱
- s3
- 프론트엔드개발자양성과정
- 배포
- 네이버로그인창만들기
- DIGITALHANARO
- github
- kdt
- 취준생
- 미래내일일경험
- 웅진씽크빅
- 맥북백틱입력
- 백틱
- udemy
- 디지털하나로
- 디지털취업
- 디지털교육
- 스나이퍼팩토리
- 버전생성프로세스
- 깃허브 레포지토리와 로컬 코드 연결하기
- 프론트엔드배포
- 개발자교육과정
- 하나은행
- 부트캠프
- 유데미
- 디지털하나로입학식
- `
- 프로젝트캠프
- Next.js
- Today
- Total
Land of Joe
2024년 02월 01일 비동기함수와 비동기처리, Promise-then, async-await, 백엔드 연결 본문
2024년 02월 01일 비동기함수와 비동기처리, Promise-then, async-await, 백엔드 연결
Arendt 2024. 2. 2. 23:491. 비동기
1-1. 비동기 함수
기본적으로 자바스크립트는 동기적이다.
= 호이스팅(변수 및 함수 선언)이 된 후부터 코드가 작성된 순서에 따라 작동한다.
※ 비동기 함수는 본인이 끝나는 것을 기다리지 않고 다음 줄을 바로 실행하도록 한다.
※ 오래 걸리는 작업을 기다리지 않고 다음 작업을 먼저 하게 하기 위함.
1-2. 비동기 함수의 종류
[ js 내에 이미 있는 비동기 함수 ]
- 시간을 이용하는 함수 (setTimeout, setInterval)
- 이벤트 등록 함수 (addEventListener)
- 백엔드 통신 함수 (fetch)
- 리액트 내에서의 비동기 함수 (useEffect)
- 데이터베이스 연결 함수
⇒ 위 함수들의 공통점: 시간이 오래 걸리는 함수임. 함수의 매개변수로 함수를 받음.
[ 개발자가 직접 만드는 비동기 함수 ]
1-3. 비동기 처리
비동기 함수가 끝나고 나서 실행되었으면 하는 내용을 처리하는 것을 비동기 처리라고 한다.
[ 비동기 처리 방법의 종류 ]
1. Callback: js 태초부터 존재했던 비동기 처리 방법(es5문법)
매개변수로 보내어지는 함수를 "Callback함수"라고 한다.
※ 내 함수를 나중에 다시 불러줘 Callback 해줘!
매개변수가 되는 console.log("1초 기다렸음") <-이것이 콜백함수에 해당하게 된다.
※ 콜백함수를 통한 비동기 처리의 문제: 코드에 탭이 너무 많아서 가독성이 떨어진다.
2. Promise/ Then: Callback의 문제점을 해결하고자 ES7버전에 출시된 비동기 함수, 비동기 처리 명령어
Promise is a Javascript object for asynchronous operation.
정해진 장시간의 기능을 수행하고나서 정상적으로 기능이 수행되어졌다면 성공의 메시지와 함께 처리된 결과값을 전달,
기능에 문제가 발생하였다면 에러를 전달해준다.
Promise 안에서 수행하는 작업들은 대게 네트워크 통신, 파일 확인 등의 무거운 작업들임
이것들을 동기적으로 처리한다면 그 다음 라인의 코드가 실행되는 데 더 오랜 시간이 걸려 문제가 생길 것이기 때문에
Promise를 이용해 비동기처리를 하는 것이다.
※ 주의: 새로운 Promise가 만들어지는 순간 안에 있는 작업을 자동적으로 실행한다(executor 함수가 바로 실행된다).
하지만 만약 사용자가 요구했을 때에만(버튼을 눌렀을 때 등) 그 작업을 실행해야한다면? 불필요한 작업이 실행되지 않도록 주의해야함
Producer의 입장에서는, 비동기적으로 처리하고 싶은 내용을 적고
성공적으로 잘 수행되었다면 resolve를 호출하고, 실패했다면 reject를 통해 에러와 함께 에러의 이유를 전달한다.
Consumer의 입장에서는, 성공한 값(then) 혹은 실패한 에러(catch)를 받아와서 원하는 방식으로 처리해준다.
then을 이용해 계속해서 chaining을 할 수 있다. (성공하면 이렇게, 또 성공하면 이렇게, .....)
(+) finally를 통해 기능의 성공과 실패에 상관없이 원하는 것을 보여줄 수도 있음.
3. Async-Await: ES8버전에 출시된 then 처리 방법을 조금 더 좋게 바꾼 형태
(Promise를 좀더 간편하게 쓸 수 있게 하는 syntactic sugar임)
async라는 키워드를 함수 앞에 쓰면 코드가 자동으로 Promise로 바뀌는구나!
⇒ 요즘은 promise로 만들고, async-await으로 처리함
'📚 Educations > ⏳ StageUs' 카테고리의 다른 글
24년 01월 18일 심화과정#6 Recoil, Styled-component (0) | 2024.01.19 |
---|---|
24년 01월 11일 심화과정#5 Redux (0) | 2024.01.12 |
24년 01월 04일 심화과정#4 CRA (1) | 2024.01.05 |
23년 12월 28일 심화과정#3 Virtual DOM, Hook, State.. (0) | 2023.12.30 |
23년 12월 21일 심화과정#2 JSX (리액트의 문법) (0) | 2023.12.21 |