ZhuangER
9/29/2018 - 8:02 PM

[Timer decorator] #tags: decorator

[Timer decorator] #tags: decorator

{
    "plugins": [
        "transform-decorators-legacy"
    ]
}
{
    "plugins": [
        "transform-decorators-legacy"
    ]
}
function timer() {
    return (target, propertyKey, descriptor) => {
        const start = Date.now();
        let oldFunc = descriptor.value;
        
        descriptor.value = async function (){
            var result = await oldFunc.apply(this, arguments);
            console.log(Date.now() - start);
            return result;
        }
    }
}

// Util function 
function delay(timeout) {
    return new Promise((resolve) => setTimeout(() => {
        resolve();
    }, timeout));
}

class Test {
    @timer()
    async test(timout) {
        await delay(timout)
        console.log("delay 1");
        await delay(timout)
        console.log("delay 2");
    }
}

const t = new Test();
t.test(1000)
t.test(100)