constsum=n=>{let sum =0;for(let i =1; i <= n; i++) sum += i;return sum;};sum(100);
sync non-block
sync : 서브루틴이 리턴 값으로 반환
non-block : 즉시 플로우 제어권을 반환
constsum=n=>{const result ={isComplete:false};requestAnimationFrame(_=>{let sum =0;for(let i =1; i <= n; i++) sum += i;
result.isComplete =true;
result.value = sum;});};const result =sum(100);while(!result.isComplete);
console.log(result.value);
async block
async : 서브루틴이 콜백을 통해 값을 반환
block : 즉시 플로우 제어권을 반환하지 않음
예
node의 async로 block인 jdbc를 사용 ?
constsum=(n, f)=>{let sum =0;for(let i =1; i <= n; i++) sum += i;returnf(sum);};sum(10, console.log);
console.log(123);//55 → 123
async non-block
async : 서브루틴이 콜백을 통해 값을 반환
non-block : 즉시 플로우 제어권을 반환
constsum=(n, f)=>{requestAnimationFrame(_=>{let sum =0;for(let i =1; i <= n; i++) sum += i;f(sum);});};sum(10, console.log);
console.log(123);//123 → 55
blocking non-blocking 과 sync 와 async는 논의하는 관점이 좀 다르다 실제로 나의 생각이지 정확한 것은 아니다 고민해 보고 수정할 생각이다.
blocking non-blocking은 실행 방식에 따른 관점이다. 실제로 sync 방식으로 할 경우 blocking을 피할 수가 없다. async로 할 경우, 다른 스레드에 실행을 시키기 떄문에 현재 스레드는 non-blocking으로 동작 할것이다.
sync async는 메모리에 적재된 명령을 순서대로 실행하는 실행 순서에 대한 관점이다. async로 할 경우, 해당 콜백이 언제 실행될지 우리는 예측을 할 수가 없다. 다른 스레드에서 돌고 있기 때문에. 만약에 다른 스레드에서 콜백이 실행 되도록 해놓는다면, 당연히 sync는 메모리에 적재된 순서대로 실행하지 않을것이다.
2.Feelings
이전에는 프로젝트를 만드는 것에 관심을 뒀는데 요즘엔 정말 한 언어만 깊게 파보고 싶다는 생각이 든다.