0.0.1 • Published 6 years ago

potato-floss v0.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
6 years ago

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

Potato Floss Demo

LICENSE

MIT

0.0.1

6 years ago