async: 3개의 글
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/kX6jq/btrPeML4RYR/ZLwCDTPKwRdcSF6SOfUR70/img.png)
Spring + Webflux Webflux (Reactive) 를 이해하기 위해 sync, async, blocking, non-blocking 차이를 이해해야 했고, async 한 코딩을 위해 CoroutineScope 를 사용하면 편리하다는 점을 알게 되었습니다. Webflux 를 이해하기 위해 일반 sync + blocking 코드를 async + non-blocking 코드로 변환해가며 이해하고자 노력하였습니다. #1 Sync 코드 아래 코드를 보면, 1~3 까지 출력을 두번 합니다. 첫번째 loop문이 끝나야 두번째 loop문을 실행합니다. 순서대로 코드가 실행되며 (sync), 앞의 loop문은 뒤의 loop문을 blocking 한다고 볼 수 있습니다. (1..3).forEach {..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/cDyJMS/btq2hCYnHG4/gBCJMqXvS4wb26eoZ85BAk/img.png)
저를 포함한 많은 분들이 blocking과 synchronous, non-blocking과 asynchronous의 차이점을 명확하게 알지 못하는 것 같아, 이번 글에서는 위 개념들에 대해 공부하면서 이해한 것들을 공유해보려고 합니다. (혹시나 잘못 설명하고 있는 점이 있다면 언제든 댓글 달아주세요.) 결론부터 말씀드리면, 두 개념(Blocking & Non-Blocking / Synchronous & Asynchronous)는 각각 제어권과 결과값을 초점으로 두고있습니다. 글만으로는 이해가 안될 것 같아 예제 코드를 가져와봤습니다. 예제 코드는 이름과 나이로 player를 찾고, (중복은 없다고 가정하겠습니다.) 해당 player가 성인이라면 player를 return하는 간단한 코드입니다. Block..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/PVX6T/btq0pwYVF6D/DvyhbdCmQxDbCow0zNJzmK/img.png)
1. 중첩 콜백 콜백지옥에 빠지기 쉬운 상황 task1 실행 이후에 task2,3,4 등이 순차적 실행 task1 실행 결과를 이용해 task2 가 실행 예제로 본다면 아래와 같은 상황이다. task1(a, b, function(err, result1) { task2(c, function(err, result2) { task3... task4... }); }); 2. Async 참조문서 : https://caolan.github.io/async/docs.html 외부모듈이기 때문에 npm install async로 설치한다. 행위 순서 제어 series(tasks[, callback]) : 각 태스크는 함수이고, 중간에 에러가 나면 다음태스크를 실행하지 않고, 완료 콜백으로 에러를 전달한다. result..