Front-end_dev

Promise 몸풀기 본문

ES6/Syntax

Promise 몸풀기

Eat2go 2018. 8. 6. 03:23
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
// #1
function myFunc() {
    return new Promise( (resolve, reject) => {
        console.log('start!');
        setTimeout( () => {
            resolve('timed out');
        },5000)
    })
    
}
 
myFunc().then(value => {
    console.log(value)
    return myFunc();
}).then(value => {
    console.log(value);
})
 
 
 
// #2
function myFunc(count = 0) {
    if(count <= 3) {
        return new Promise( (resolve, reject) => {
            console.log('start!' + count);
            setTimeout( () => {
                console.log('timed out(5000ms)')
                resolve(myFunc.bind(null,count+1));
            },5000)
        })
    }    
}
 
function generator_then(func) {
    if(typeof func === 'object' && typeof func.then === 'function') {
        func.then(f => {
            generator_then(f())
        })
    }
}
 
generator_then(myFunc())
cs


#1은 워밍업이고

#2에서는 비동기적인 작업에대해서 then()메서드를 게속 하드코딩으로 chain하는형식이아닌 자동으로 생성하여 연속적인비동기작업을 보여준다