Console - timing
by Julien Roche
HTML
<h1>Open your Dev console</h1>
Babel + JSX
function timing(target, key, descriptor) {
const myMethod = descriptor.value;
descriptor.value = function (...arg) {
console.time(myMethod.name);
const returned = myMethod.apply(this, arg);
if (returned instanceof Promise) {
return returned.then((result) => {
console.timeEnd(myMethod.name);
return result;
});
}
console.timeEnd(myMethod.name);
return returned;
};
return descriptor;
}
class MyClass {
@timing
myAwesomeFunction() {
const randomColor = Math.floor(Math.random()*16777215).toString(16);
console.info('%cNo really awesome...', `color:#${randomColor};`);
}
@timing
myAsyncFunction() {
return new Promise((resolve) => {
setTimeout(() => {
this.myAwesomeFunction();
resolve();
}, 150);
});
}
}
(async function() {
const instance = new MyClass();
instance.myAwesomeFunction();
await instance.myAsyncFunction();
})();