비동기 프로그래밍
비동기 란 대체 무엇인가 ?
' 비동기 ' 라는 단어를 처음으로 마주한 것은 국비교육학원에서 처음으로 AJAX 를 마주하였을 때이다. AJAX는 Asynchronous Javascript and XML 의 약자로 Javascript 와 XML 을 비동기적으로 처리하는 것이다. 나는 처음에 ' 비동기 ' 라는 단어를 우매한 지식으로 잘못 이해하였다. ' 아닐 비 ' , ' 움직일 동 ' 한자를 써서, 비동기 인 줄 알았고, 수업 시간에도 AJAX 를 통해서 , 해당 URL 에서 이동하지 않고, DB 에 있는 Data 를 불러와서, 정말로 그러한 뜻인 줄 알고 사용했다. 그러하여, 비동기를 처리함에 있어서, 계속적으로 오류가 발생했다. 예를 들면, AJAX 를 통해, 받아온 값을 특정 변수에 넣어주고 그 값을 화면에 보여주고 싶었지만, 계속해서 undefined 가 뜨는 현상을 경험하게 되었다. 나는 이러한 부분이 전혀 비동기 프로그래밍과는 관련된 부분이 아니라고 생각했지만, 국비지원학원에서 학우의 도움을 받아 jQuery 를 이용하여 AJAX 를 이용할 때, async : true 가 기본적으로 설정되기 때문에 이러한 현상이 발생하는 것임을 알 수 있었다. 아직까지도 헷갈리고 좀 더 자세히 알아보기 위해서 , 이 블로그 글을 작성하게 되었다. 그렇다면, 비동기란 무엇인지 자세하게 찾아보려고 한다. 모던 자바스크립트 Deep Dive 의 책 내용을 인용해보려고 한다. 해당 책에서는 다음과 같이 설명한다.
현재 실행 중인 태스크가 종료할 때까지 다음에 실행될 태스크가 대기하는 방식을
동기(synchronous) 처리라고 한다.
반면, 현재 실행중인 태스크가 종료되지 않은 상태라 해도 다음 태스크를 곧바로 실행하는 방식을
비동기처리(asynchronous)라고 한다.
출처 : 모던 자바스크립트 Deep Dive : 자바스크립트의 기본 개념과 동작 원리
즉, 내가 알고 있던 " 움직이지 않는다 " 라는 전혀 관련이 없는 뜻이였던 것이다. 책을 읽고 나서 , 동기 와 비동기 처리에 대해 더 자세히 알 수 있었고, 나중에는 그렇다면 자바스크립트에서는 동기 와 비동기 처리를 어떻게 처리하는 지 알아 볼 수 있는 시간이 있다면 좋을 것 같다.