Non-blocking javascript code
Example of solution to make non-blocking long running javascript code
by xufocoder
JavaScript
function delay(ms) {
const start = Date.now();
let now = start;
while (now - start < ms) {
now = Date.now();
}
}
function Processor() {
this.sum = 0;
}
Processor.prototype.calculate = function(i) {
this.sum += i;
delay(10);
}
Processor.prototype.result = function() {
return this.sum;
}
const calculate = (processor, times, callback) => {
let i = 1;
const tick = () => {
if (i < times) {
processor.calculate(i);
i++;
setTimeout(tick);
} else {
callback();
}
}
setTimeout(tick);
}
const processor = new Processor();
calculate(processor, 1000, () => {
console.log(processor.result());
})