본문 바로가기
JavaScript

Axios

by 갈잃자 2022. 5. 3.

Axios 개념을 정리하기 전 필요한 개념정리(전에 올린 개념들과 함께 공부하는게 좋음!)

 

Callback function

  • 다른 함수에 인자로 전달된 함수
  • 외부 함수 내에서 호출되어 일종의 루틴 또는 작업을 완료함
  • 동기식 비동기식 모두 사용됨
  • 비동기 작업이 완료된 후 코드 실행을 계속하는 데 사용되는 경우를 비동기 콜백(asynchronous callback)이라고 함

Async callbacks

  • 백그라운드 코드 실행이 끝나면 callback 함수를 호출하여 작업이 완료되었음을 알리거나, 다음 작업을 실행하게 할 수 있음 (ex) click이 되는지 안되는지 기다리다가 클릭이 되었을때 실행시키는 느낌)
  • callback 함수를 다른 함수의 인수로 전달할 때, 함수의 참조를 인수로 전달할 뿐이지 즉시 실행되지 않고 함수의 body에서 "called back"됨

callback을 사용하는 이유

  • django의 경우 "요청이 들어오면", event의 경우 "특정 이벤트가 발생하면" 이라는 조건으로 함수를 호출할 수 있었던건 'Callback function' 개념 때문에 가능!

callback Hell

  • 순차적인 연쇄 비동기 작업을 처리하기 위해 callback함수를 계속 호출하게 됨으로써 디버깅와 코드의 가독성이 떨어짐
  • 이를 해결하기 위해
    1. 코드의 깊이를 얕게 유지
    2. 모듈화
    3. 모든 단일 오류 처리
    4. ☆promise callbacks(promise 콜백 방식을 사용)

promise object

비동기 작업의 최종 완료 또는 실패를 나타내는 객체

  • 미래의 완료 또는 실패와 그 결과 값을 나타냄
  • 미래의 어떤 상황에 대한 약속

지금까지 배운 내용들을 뒷받침삼아 Axios를 사용하여야 하는 이유를 짧게 요약해 보자면

 

single thread가 잘 동작을 하기 위해서 web api를 사용하는데 그러기 위해선 event loop이
일 할당을 도와주고 이는 async(비동기)움직임을 제어하기 위해서 인데,
이 비동기적인 움직임을 이해하기 위해서 callback함수에 대해 배우고
비동기적인 함수에게 순서를 부여하는데 callback hell에 빠지지 않기 위해 promise를 배웠다.
이 promise는 Axios를 사용하여 표현할 수 있다!

 

대망의 Axios

 

Axios

  • "Promise based HTTP client for the browser"
  • AJAX요청을 하는데 XHR보다 더 편리하게 요청이 가능하도록 도움을 준다.
  • parsing도 axios에서 해준다.
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

axios 공식문서에서 script내에 axios를 불러올 코드를 가져온다.

.then(callback)

  • 성공했을 때의 코드를 callback 함수 안에 작성
  • 각각의 then은 서로 다른 promise를 반환

.catch(callback)

  • .then이 하나라도 실패하면(거부 되면) 동작
  • 이전 작업의 실패로 인해 생성된 error 객체는 catch 블록 안에서 사용할 수 있음

promise를 쓰는 방법으로 객체를 axios라는 객체를 사용한다 .

 

예제코드

const myPromise = axios.get(URL)

myPromise
	.then(response => {
    	return response.data
})

axios.get(URL)
	.then(response => {  //성공이 된다면 return을 수행
    	return response.data
	})
	.then(response => {  //위가 성공된다면 return을 수행
    	return response.data
	})
	.catch(error => {  //실패한다면 이와같이 실행
    	console.log(error)
	})
	.finally(function () { //실패든 성공이든 마지막은 이렇게 꼭 실행
    console.log("나는 마지막에 무조건 시행!!")
})

 

'JavaScript' 카테고리의 다른 글

array(배열)을 변형시키는 내장함수들  (0) 2022.09.20
형변환, typeof  (1) 2022.09.18
삼항연산자  (0) 2022.09.17
비동기식 코드  (0) 2022.05.03
XMLHttpRequest  (0) 2022.05.03

댓글