0.0.1 • Published 6 years ago
potato-floss v0.0.1
Potato Floss
Getting Start
Ingredients
Tools
npm install potato-floss
A complete potato
/**
* Add up from 0 to 10,000,000
* use decimal.js for high precision
* https://github.com/MikeMcl/decimal.js
*/
function calculate() {
let sum = new Decimal(0);
const max = new Decimal('10000000');
for (let i = new Decimal(0); i.lt(max); i = i.plus(1)) {
sum = sum.plus(i);
}
return sum;
}
Instructions
Wash the potato
/*
* Use generator function
*/
function* calculate() {
let sum = new Decimal(0);
const max = new Decimal('10000000');
for (let i = new Decimal(0); i.lt(max); i = i.plus(1)) {
sum = sum.plus(i);
}
return sum;
}
Cut into shreds
function* calculate() {
let sum = new Decimal(0);
const max = new Decimal('10000000');
for (let i = new Decimal(0); i.lt(max); i = i.plus(1)) {
sum = sum.plus(i);
// yield per 100 loops
if (i.mod(100).equals(0)) {
yield `${i.mul(100).div(max).toFixed(1)}`;
}
}
return sum;
}
Cook
const worker = new window.PotatoFloss(calculate, function (percent) {
// percent from `yield`
console.log(`${percent}% finished`);
});
worker.start().then(function (sum) {
// sum from `return`
console.log(sum);
});
Finish
LICENSE
MIT
0.0.1
6 years ago