github.com/sl1pm4t/consul@v1.4.5-0.20190325224627-74c31c540f9c/ui-v2/tests/lib/measure/getMeasure.js (about)

     1  /* eslint no-console: "off" */
     2  const log = function(results, measurement, tags) {
     3    console.log(measurement, results, tags);
     4  };
     5  export default function(len = 10000, report = log, performance = window.performance) {
     6    return function(cb, measurement, tags) {
     7      let actual;
     8      return new Array(len)
     9        .fill(true)
    10        .reduce(function(prev, item, i) {
    11          return prev.then(function(ms) {
    12            return new Promise(function(resolve) {
    13              const start = performance.now();
    14              cb().then(function(res) {
    15                actual = res;
    16                resolve(ms + (performance.now() - start));
    17              });
    18            });
    19          });
    20        }, Promise.resolve(0))
    21        .then(function(total) {
    22          report({ avg: total / len, total: total, count: len }, measurement, tags);
    23          return actual;
    24        });
    25    };
    26  }