可以使用以下代码实现一个装饰器函数来减慢另一个函数的执行速度:
function slowDown(fn, ms) {
return function() {
setTimeout(() => fn.apply(this, arguments), ms);
};
}
这个slowDown函数接受两个参数:要减慢的函数(fn)和延迟的毫秒数(ms)。它返回一个函数,它将传递给它的参数应用于fn,并在延迟ms毫秒后调用该函数。
例如,如果要减慢执行的函数是一个简单的函数add,我们可以使用以下代码来调用slowDown:
function add(a, b) {
return a + b;
}
const slowAdd = slowDown(add, 1000); // 将add函数减慢1秒
console.log(slowAdd(1, 2)); // 1秒后输出3
在这个例子中,slowAdd是一个新函数,它是使用slowDown创建的。它与原始函数add的区别在于,它将延迟1秒后才执行。输出结果为3,因为在1秒钟后,slowAdd会将参数1和2传递给add,并返回它的结果。