一次围绕 setTimeout 的前端面试经验分享
问题
题目:实现一个函数 delay(fn, time)
,该函数接收一个函数和一个时间参数,返回一个新的函数,在调用这个新函数时,会在指定的时间之后执行传入的原函数。
思路:使用 setTimeout
函数来实现该功能。
代码
function delay(fn, time) {
return function() {
setTimeout(fn, time);
}
}
示例
示例 1
function foo() {
console.log('hello world');
}
const delayedFoo = delay(foo, 1000);
delayedFoo(); // 1 秒后输出 "hello world"
示例 2
function bar() {
console.log('goodbye world');
}
const delayedBar = delay(bar, 2000);
setTimeout(delayedBar, 1000); // 2 秒后输出 "goodbye world"
分析
该题目考察了对闭包和异步编程的理解。主要思路是使用闭包封装一个新函数,返回这个新函数,在这个新函数中使用 setTimeout
来实现异步延迟执行传入的原函数。
要注意的地方:
- 原函数的参数需要在新函数中使用到时,需要在返回的函数中将参数传递给原函数。
setTimeout
函数的第二个参数是延时时间的毫秒数。
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!