一次围绕 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函数的第二个参数是延时时间的毫秒数。
The End





大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)