본문 바로가기
CS/웹

JS 비동기 HTTP 통신

by DYII 2021. 8. 7.
728x90

1. AJAX(Asynchronous Javascript And XML)

비동기식 자바스크립트와 XML 이란 의미로 데이터를 이동하고 화면을 구성하는 데 있어 화면을 갱신하지 않아도 필요한 데이터를 서버로 보내고 응답을 가져오는 방법으로 페이지를 전체 새로고침 하지 않아도 데이터를 조회할 수 있음

 - JQuery를 통해 Ajax를 더 쉽게 사용할 수 있음. 코드도 간단하고, 브라우저 간 호환성이 보장되어 있음.

 

2. Axios

브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리.

=> return을 Promise 객체로 해주기 때문에 response 데이터를 다루기 쉬움.

 - 백엔드와 프론트엔드의 통신을 쉽게 하기 위해 사용하는 Ajax와 더불어 사용함.

 - 운영환경에 따라 브라우저의 XMLHttpRequest 객체 또는 Node.js의 http api 사용

axios({
	method: 'post',
    url: '/post/123',
    data: {
    	title : 'test',
        writer : 'a123'
    }
});

3. fetch

 JS 내장 라이브러리로, promise 기반으로 만들어져 있으며 axios 보다는 브라우저 호환성이 떨어진다.

 

*****************************************************************************************

Promise 

 - JS의 Promise 객체는 비동기 연산을 수행하고 연산이 종료되면 결과를 알려준다.

 - ES6에 추가된 객체로 콜백 지옥 같은 코드 형성 안되도록 도와줌.

 

Promise 상태 종류와 사용코드

상태 종류

 1. 대기(pending) : 아직 작업이 완료되지 않은 상태 또는 초기 상태

 2. 이행(fulfilled) : 작업이 성공적으로 완료된 상태

 3. 거부(rejected) : 작업 수행 중, 어떠한 요인으로 인해 실패한 상태

특징

 - 작업이 성공적으로 완료되면 Promise.resolve() 메서드를 통해 결과 값으로 이행하는 Promise 객체 반환

 - 작업이 실패되면 Promise.reject() 메서드를 통해 거부하는 Promise 객체 반환

 - Promise.prototype.then() , Promise.prototype.catch() 메서드는 arguments로 콜백 함수를 받는데,  이 콜백 함수를 통해 이행, 거부 결과를 확인할 수 있음

var test = function (param) {
	return new Promise(function (resolve, reject) {   // 대기상태
    	window.setTimeout(function() {
        	if(param){
            	resolve("완료"); 
            } else {
            	reject (Error("실패"));
            }
        }, 3000);        
    });
};

test(true).then (function (text) {   // resolve() 호출할때가 이행 상태 
    	console.log(text);
    },function (error) {
    	console.log(error);
    }

 

 

728x90

'CS > ' 카테고리의 다른 글

스프링  (0) 2022.03.05
[React] 생명주기  (0) 2021.09.06
서블릿 구조  (0) 2021.07.22
자바 LOG  (0) 2021.07.20
JSP include 방법  (0) 2021.07.19