Using Promises with a For Loop
Using Promises with a For Loop
by alexbfree
Babel + JSX
//NB These timeouts are not really proper promises, because they are asynchronous. So i had to fudge it with the timeouts. Need to properly simulate a pause t
let tasks = [];
let con1 = new Promise( (resolve,reject) => {
setTimeout(() => {
resolve('connected db 1');
}, 2000);
});
let con2 = new Promise( (resolve,reject) => {
setTimeout(() => {
resolve('connected db 2');
}, 2000);
});
let tables = ["t1","t2","t3","t4","t5"];
Promise.all([con1,con2]).then(values => {
console.log(values);
for(let t in tables) {
let table = tables[t];
let task = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("finished query on "+table);
}, 2000); //timeout from start
});
tasks.push(task);
}
let end1 = new Promise( (resolve,reject) => {
(function (rs,rj) {
return setTimeout(() => {
rs("disconnected db 1");
}, 7000); //timeout from post-connection
})(resolve,reject);
});
let end2 = new Promise( (resolve,reject) => {
(function (rs,rj) {
return setTimeout(() => {
rs("disconnected db 2");
}, 5000); //timeout from post-connection
})(resolve,reject);});
Promise.all(tasks).then(values => {
console.log(values);
Promise.all([end1,end2]).then(values => {
console.log(values);
});
});
});