ES6+ SYNC, ASYNC (block, non-block)
SYNC : 서브루틴이 즉시 값을 반환함
BLOCK : 즉시 플로우제어권을 반환하지 않음
대부분 이렇게 프로그램을 작성함
코드 작성할때 습관을 아래처럼(블럭가드)
for(let i=i; j=arr.length,limit=20000; limit-- > 0 && i<j; i++) [
}
if(limit<0) {
}
NON BLOCK : 즉시 플로우제어권을 반환함
ASYNC : 서브루틴이 콜백을 통해 값을 반환함
BLOCK : 즉시 플로우제어권을 반환하지 않음 : 무조건 피해야함
NON BLOCK : 즉시 플로우제어권을 반환함
modern API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | async 함수 : 서브루틴 콜백을 통해 값을 반환 const double = (v,f) =>f(v*2); double(2, console.log); async BLOCK const sum = (n,f) => { let sum = 0; for(let i=1; i<=n; i++) sum += i; return f(sum); }; sum(10, console.log); console.log('ABC'); 55 ABC async NON BLOCK const sum = (n,f) => { requestAnimationFrame(_=>{ setTimeout(function() { console.log("1초후"); },1*1000); let sum = 0; for(let i=1; i<=n; i++) sum += i; f(sum); }); } sum(10, console.log); console.log("ABC"); ABC undefined 55 1초후 | cs |
https://www.youtube.com/watch?v=BeFekctVoq0
'프로그래밍 > Js' 카테고리의 다른 글
JavaScript Lexical Grammar (0) | 2021.10.21 |
---|---|
ES6+ 2차원배열 foreach (0) | 2018.11.23 |
ES6+ html parser 재귀함수 (0) | 2018.11.23 |
async await promise 예제 (0) | 2018.11.21 |
ES6+ blocking 과 non-blicking (time slice) (0) | 2018.11.21 |