반응형

 

fetch

 

: Promise기반 ES6 내장 라이브러리API를 간편하게 호출할 수 있다.
  
기존 비동기처리는 이벤트를 기반으로 하는 XHR객체를 사용했으나 이후 http요청에 최적화된 api들이 생겨나기 시작

=> fetch(Promise), Axios(xhr, promise)

 

 
- 결과 반환 전까지의 3개 상태 (이행/거부에 해당하는 두 개의 콜백함수를 인자로 받음)
resolve : 해결, 이행, 완료시 결과를 표현하며 then()을 통해 처리결과를 전달받을 수 있음
reject : 거부, 실패시 결과를 표현하며 catch()로 에러정보를 받을 수 있음

 

 

- 사용 방법

Fetch(requestInfo(URL), requestInit(OPTION))

 

 

 

- 응답 객체 제공 메소드

형태
text() 응답을 텍스트로 변환
json() 응답을 JSON형태로 파싱
blob() 응답을 blob형태로 반환(멀티미디어 데이터를 다룰 때 사용)

 

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<input id="userId" value="b001">
	<input type="password" id="userPw" value="1004">
	<button>버튼</button>
	<div></div>

<script>
	document.querySelector('button').addEventListener('click', function(){
		

		let userId = document.querySelector('#userId').value;
		let userPw = document.querySelector('#userPw').value;
	
		let opt = {
				method: 'post', 
				body: new URLSearchParams("uId=" + userId + "&uPw=" + userPw)
			};
		
		let rst = fetch("loadTest.jsp", opt);
	// 	console.log(rst);
	 			
		rst.then( rst => rst.json() ) // json정보를 파싱처리
			.then( data => data.rst ) // 파싱처리된 결과 (=객체로 변환된) 결과를 매개변수가 받음 
	// 		.then( data1 => console.log("1회 출력된 정보는 더이상 출력되지 않음", data1))
			.then( data2 => {
				if(data2 == "ok") document.querySelector('div')
													.innerHTML = "<mark>로그인 " + data2 + "</mark>";
				else document.querySelector('div').innerText = "회원정보가 맞지 않음";
			})
			.catch(err => console.log("에러>> ", err))
			.finally(alert("성공/실패 상관없이 무조건 뜸"));
	});
</script>
</body>
</html>

 

결과 화면1-1 : 버튼 클릭 후

 

결과 화면1-2 : 로그인 성공 시

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형