async: 3개의 글
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 {..
저를 포함한 많은 분들이 blocking과 synchronous, non-blocking과 asynchronous의 차이점을 명확하게 알지 못하는 것 같아, 이번 글에서는 위 개념들에 대해 공부하면서 이해한 것들을 공유해보려고 합니다. (혹시나 잘못 설명하고 있는 점이 있다면 언제든 댓글 달아주세요.) 결론부터 말씀드리면, 두 개념(Blocking & Non-Blocking / Synchronous & Asynchronous)는 각각 제어권과 결과값을 초점으로 두고있습니다. 글만으로는 이해가 안될 것 같아 예제 코드를 가져와봤습니다. 예제 코드는 이름과 나이로 player를 찾고, (중복은 없다고 가정하겠습니다.) 해당 player가 성인이라면 player를 return하는 간단한 코드입니다. Block..
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..