如何正确编写定时器函数?

问题描述 投票:0回答:1

程序员

我有几个复杂的排序函数,它们从其他函数获取参数 我想编写一个 timer 函数,该函数将采用带有参数的复杂函数,该函数调用看起来如此:

timer(sortFunc1(arrayGenerator(COUNT), arg1...,))
timer(sortFunc2(arrayGenerator(COUNT), arg1...,))
...
timer(sortFunc10(arrayGenerator(COUNT), arg1...,))

但是我的计时器函数抛出“func 不是函数”:

function timer(func) {
   let start = Date.now();
   func();
   console.log(Date.now() - start);
}

我应该如何编写函数计时器来像上面那样调用它 smb ? 谢谢 我尝试阅读有关复杂函数、从函数返回函数的文章

javascript function timer closures
1个回答
0
投票

您需要分别传递函数本身(不带括号)及其参数,然后使用

apply
方法使用提供的参数调用函数:

function timer(func, ...args) {
   let start = Date.now();
   func.apply(null, args);
   console.log(Date.now() - start);
}

这就是你如何使用它:

timer(sortFunc1, arrayGenerator(COUNT), arg1, ...);
timer(sortFunc2, arrayGenerator(COUNT), arg1, ...);
// ...
timer(sortFunc10, arrayGenerator(COUNT), arg1, ...);
© www.soinside.com 2019 - 2024. All rights reserved.