프로그래밍/Js

ES6+ SYNC, ASYNC (block, non-block)

소행성왕자 2018. 11. 21. 14:06


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(2console.log);
 
 
async    BLOCK 
    
    const sum = (n,f) => {
        let sum = 0;
        for(let i=1; i<=n; i++) sum += i;
        return f(sum);
    };
 
    sum(10console.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(10console.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