promise로 구현
new Promise((resolve, reject) => {
setTimeout(
(x) => {
let result = x;
console.log(result);
resolve(result);
},
1000,
10
)
}).then(result => {
return new Promise((resolve, reject) => {
setTimeout(
(x) => {
result *= x;
console.log(result);
resolve(result);
},
1000,
20
)
})
}).then(result => {
return new Promise((resolve, reject) => {
setTimeout(
(x) => {
result *= x;
console.log(result);
resolve(result);
},
1000,
30
)
})
}).then(result => {
return new Promise((resolve, reject) => {
setTimeout(
(x) => {
result *= x;
console.log(result);
resolve(result);
},
1000,
40
)
})
});
generator로 구현
function calc(x, y) {
setTimeout(
() => {
iter.next(x * y)
},
1000
)
}
function*testGen() {
const a = yield calc(1, 10);
console.log(a);
const b = yield calc(a, 20);
console.log(b);
const c = yield calc(b, 30);
console.log(c);
const d = yield calc(c, 40);
console.log(d);
}
const iter = testGen();
iter.next();