简单实现如下:
function once (f) {
let result
let revoked = false
return (...args) => {
if (revoked) return result
const r = f(...args)
revoked = true
result = r
return r
}
}
> const f = () => {console.log('call'); return 3;}
< undefined
> once_f = once(f)
< (...args) => {
if (revoked) return result
const r = f(...args)
revoked = true
result = r
}
// 第一次调用
> once_f()
< call
< 3
// 第二次调用,没有打印 call
> once_f()
< 3
【字节-视频架构组-前端】头条架构组招人了内含自测题【美团】什么是防抖和节流,他们的应用场景有哪些【美团】如何获取一个进程的内存并监控
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8