题目:实现一个函数 delay(fn, time)
,该函数接收一个函数和一个时间参数,返回一个新的函数,在调用这个新函数时,会在指定的时间之后执行传入的原函数。
思路:使用 setTimeout
函数来实现该功能。
function delay(fn, time) {
return function() {
setTimeout(fn, time);
}
}
function foo() {
console.log('hello world');
}
const delayedFoo = delay(foo, 1000);
delayedFoo(); // 1 秒后输出 "hello world"
function bar() {
console.log('goodbye world');
}
const delayedBar = delay(bar, 2000);
setTimeout(delayedBar, 1000); // 2 秒后输出 "goodbye world"
该题目考察了对闭包和异步编程的理解。主要思路是使用闭包封装一个新函数,返回这个新函数,在这个新函数中使用 setTimeout
来实现异步延迟执行传入的原函数。
要注意的地方:
setTimeout
函数的第二个参数是延时时间的毫秒数。