node js
Javascript Promise 객체 활용 – Value 처리
칩사마코더
2017. 6. 24. 04:42
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]);
});