Front-end_dev
Promise 몸풀기 본문
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하는형식이아닌 자동으로 생성하여 연속적인비동기작업을 보여준다
'ES6 > Syntax' 카테고리의 다른 글
simple iterator(generator) example (0) | 2018.12.11 |
---|---|
dynamically assigning name to function in ES6 & C++ (0) | 2018.12.07 |
2차원배열 생성기 및 인덱스범위 벗어날시 에러 강제 (0) | 2018.11.09 |
ES7 decorator (0) | 2017.12.24 |
디자인패턴... (0) | 2017.04.05 |