비동기 처리(feat. axios) - 1
비동기처리
대부분 코드의 로직을 구성할 때 아래의 코드처럼 동기화된 방식을 이용한다.
1
2
3
start = run();
start2 = function1(start);
start3 = function2(start2);
run()를 실행하여 나온 결과로 start를 이용하여 function1()를 호출하는 방식으로 run()-> function1() -> function2()의 순서대로 호출 될 것이다
허나 이러한 동기화 방식으 단점은 앞으로 코드 run()가 실행되어야 다음 코드 function1()가 실행이 되는 구조이기 때문에 앞의 코드가 리턴을 할 때까지 다른 작업은 실행되지 않기 때문에 동시에 여러 작업을 처리할 수 없다는 한계가 있다.
그래서 이러한 문제를 극복한 비동기 방식이 있다.
비동기방식이란 특정 처리의 실행이 끝날 때까지 기다리지 않고 다른 여러 작업을 처리하여 결과가 나오면 이를 통보해주는 방식이며, 그래서 이러한 방식을 콜백(callback)이라고도 한다.
비동기 방식은 start()를 호출할 때 function1()를 같이 파라미터로 전달하여 코드는 이러한 구조가 될 것이다.
1
2
3
4
5
function start(callback){
...
start2 = function1(start)
start3 = function2(start2)
}
Axios
이러한 비동기 호출을 동기화된 방식으로 작성할 수 있는 문법적인 장치가 Axios라이브러리이다.
Axios를 이용하면 Ajax를 호출하는 코드를 작성할 때 마치 동기화된 방식처럼 작성할 수 있어 javascript를 기반으로 하는 프레임워크(Angular)나 라이브러리들(Reac, Vue)에서 많이 사용되고 있다.
그런데.. 비동기방식은 자바스크립트에서 하는 거 아닌가?
위의 코드들을 보았을 때 당연 javascript들을 간단하게 공부할 때 보았겠지만, 자바를 사용해온 사람들에게는 익숙하지 않을 것이고 조금만 단계가 많아져도 복잡한 코드를 만들어야하는 불편함이 있다. (그래서 axious 같은 라이브러리를 사용한다).
그렇다면 관점을 바꿔서 “자바스크립트에서 왜 사용했을까”를 생각해보자.
javascript는 특성상 웹 페이지와 밀접하게 관계되어 이러한 환경에 제공되는 API는 처리 속도가 최선이 되어야 했기에 비동기방식으로 사용된 것이다.
그렇기에 JAVA와 SPRING로 서버에서 많은 로직을 구현하기 위해서는 이러한 비동기방식이 필요하지 않을까?