일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스터디
- 프로그래머스
- dev-maching
- 웹개발자
- 프로젝트
- 컨테이젼
- 컴포넌트
- express
- 초보개발자
- 프리온보딩
- 프론트엔드취준생
- Vue
- 전염병
- react
- 프론트엔드
- Javascript
- 개발자일기
- 웹개발
- Strict Mode
- 자바스크립트
- 일기
- 원티드
- 개발자
- 코로나19
- Developer
- 리액트
- node.js
- 인턴쉽
- IT
- Prototype
- Today
- Total
프로그래밍밍
2020.02.02 비동기식 처리모델 본문
비동기식 처리모델
우선 자바스크립트에서는 동기식과 비동기식 처리방식이 있다.
클라이언트부분과 서버 부분간 연결이 되었을때 상황에 따라 동기식과 비동기식 처리방식을 선택한다.
동기식은 클라이언트에서 서버에 요청을 보내면 서버는 요청을 받아들이고
클라이언트에게 다시 돌아갈때 페이지를 새로고친다.
하지만 비동기식은 클라이언트와 서버간의 요청을 주고받을때 페이지를 새로고치지않는다.
그래서 보다 빠르게 실행할수있다.
JSON
클라이언트와 서버간 요청을 주고받을때 데이터교환규칙을 말한다.
JSON.stringify()
객체를 JSON의 문자열 형태로 받을수있다.
JSON.parse()
JSON의 문자열 형태를 객체로 받을수있다.
XMLHttpRequest
클라이언트의 한 부분인 브라우저에서 ajax에 요청을 보낼때 XMLHttpRequest를 사용하여 보낸다.
그리고 서버에서 보낸 결과를 처리할때도 사용하게된다.
XMLHttpRequest.open(method, url[, async])
XMLHttpRequest.open(method, url[, async])을 통하여 요청을 준비한다.
XMLHttpRequest.send()
XMLHttpRequest.open(method, url[, async])을 이용해 준비된 요청을
XMLHttpRequest.send()를 이용하여 서버에 보낸다.
괄호안에 인수를 넣어서 전달할수도 있다.
GET방식일 경우 null이 될것이고
POST방식일 경우 인수를 넣으면 된다.
XMLHttpRequest.setRequestHeader
XMLHttpRequest.setRequestHeader는 XMLHttpRequest.send()를 통해 데이터를 보낼때 Header를 설정해주는 기능을 가지고있다.
ContentType과 Accept가 있다.
ContentType
사용법은 이렇게 된다.
const xhr = new XMLHttpRequest();
xhr.setRequestHeader('Content-type', 'application/json');
text타입을 바꾸고 싶다면 위치는 그대로 이름만 바꾸면 된다.
Accept
Accept는 서버가 클라이언트에 데이터를 보낼때 그 데이터의 Application 타입을 정해주는것이다.
xhr.setRequestHeader('Accept', 'application/json');
위에 방법이랑 똑같다.
Ajax Response
서버에서 보낸 결과를 다시 클라이언트에서 받아야하지만 우리가 왔는지 안왔는지를 정확히 알수없다.
대신에 xhr.onreadystatechange()를 통해 간접적으로 알수있다.
바로 서버에서 보낸 데이터가 클라이언트로 올 경우에만 실행되는 함수를 사용해주는것이다.
저 xhr.onreadystatechange() 안에 실행할 함수를 하나 넣으면 끝.
만약에 안온다면 왜 안오는지 알고싶다면
xhr.readyState를 이용하여 찾아보자.
0~4번까지 각 번호가 있고 의미가 적혀있다.
현재 내가 서버로부터 받은 데이터의 상태가 몇번인지 체크하고 어디서 잘못되었는지 확인하면
에러를 고치는데 더 수월할것이다.
'Programming > JavaScript' 카테고리의 다른 글
2020.02.08 Javascript ES6 let,const (0) | 2020.02.08 |
---|---|
2020.02.07 Ajax 예제 (0) | 2020.02.07 |
2020.02.01 Strict Mode (스트릭트 모드) (0) | 2020.02.01 |
2020.01.31 프로토타입 (0) | 2020.01.31 |
2020.01.30 내부함수&재귀함수&콜백함수 (0) | 2020.01.30 |