const sum = n=>{ let sum = 0; for(let i = 1; i <= n; i++) sum += i; return sum; };
sum(100);
non block즉시플로우제어권을반환함
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
const sum = n=>{ const result = {isComplete:false}; requestAnimationFrame(_=>{ let sum = 0; for(let i = 1; i <= n; i++) sum += i; result.isComplete = true; result.value = sum; }); return result; };
const result = sum(100);
while(!result.isComplete); // 무한루프기 때문에 에러남 console.log(result.value);
ASYNC
서브루틴이 콜백을 통해 값을 반환함
1 2 3 4 5
const double = (v, f)=> f(v*2);
double(2, console.log); //4
block 즉시 플로우 제어권을 반환하지 않음
1 2 3 4 5 6 7 8 9 10 11
const sum = (n, f)=>{ let sum = 0; for(let i = 1; i <= n; i++) sum += i; return f(sum); };