http://proinlab.com/archives/2086
Promise.values = [];
Promise.id = 0;
Promise.exec = (promise)=> {
let thisId = Promise.id;
if(promise) {
promise.then((data)=> {
Promise.values[thisId] = data;
resolve(data);
});
Promise.id++;
return promise;
}
Promise.id = 0;
return new Promise((resolve)=> resolve());
}
let A = (arg1, arg2)=> new Promise((resolve)=> {
console.log('A Executed');
setTimeout(()=> {
resolve({result: arg1 + arg2});
}, 500);
});
let B = (arg1, arg2)=> new Promise((resolve)=> {
console.log('B Executed');
setTimeout(()=> {
resolve({result: arg1 - arg2});
}, 500);
});
let C = (arg1, arg2)=> new Promise((resolve)=> {
console.log('C Executed');
setTimeout(()=> {
resolve({result: arg1 * arg2});
}, 500);
});
Promise.exec()
.then(()=> Promise.exec(A(1, 2)))
.then((data)=> Promise.exec(B(data.result, 4)))
.then((data)=> Promise.exec(C(Promise.values[0].result, Promise.values[1].result)))
.then((data)=> {
// Promise A result
console.log('A', Promise.values[0]);
// Promise B result
console.log('B', Promise.values[1]);
// Promise C result
console.log('C', data); // or console.log(value[2]);
});
'node js' 카테고리의 다른 글
Node.js의 비동기 반복 패턴 - 2 부 (0) | 2017.05.26 |
---|---|
Node.js의 비동기 반복 패턴 (0) | 2017.05.26 |
forever npm start (0) | 2017.03.21 |
자바스크립트 연산전에 형변환을 해야 버벅거림이 없음 (0) | 2016.12.18 |
아마존 리눅스 node js 설치하기 (0) | 2016.12.13 |