JSFiddle - React, Tailwind, and code Playground
by lega911
JavaScript
let lines = [];
class Promise extends window.Promise {
constructor(fn) {
super(fn);
for(let l of lines) l.push(this);
}
}
Promise.wait = function(fn) {
let line = [];
lines.push(line);
let result = fn();
lines.splice(lines.indexOf(line), 1);
return Promise.all(line).then(() => result);
}
// example
const delay = (x) => {
console.log('delay', x);
return new Promise((resolve) => setTimeout(resolve, x));
}
const delay1sec = () => {
return Promise.wait(() => {
delay(1000);
}).then(() => {console.log('1 sec finished')})
}
Promise.wait(() => {
console.log('start');
delay(1500);
delay1sec();
return Date.now();
}).then((start) => console.log('finished', Date.now() - start));