首页 > 其他分享 >js 实现可缓存方法

js 实现可缓存方法

时间:2024-04-21 10:55:59浏览次数:21  
标签:缓存 return js let result func 方法 row

1.概述

有些场景下,如果一些函数需要大量的运算,但是他们的传入的参数是一样的,这个时候,我们可以将这些运算缓存下来,之后的运算就可以不用重复计算了。

2.实现方法

<script>
// 可以缓存的函数
function cacheFunc(fn){
	//缓存处理
	let cache=new Map();
	return function(...args){
		//将参数作为key
		let key=JSON.stringify(args);
		let result=cache.get(key);
		if(result){
			console.info("getFromcache");
			return result;
		}
		//真正执行计算
		result= fn(...args)	;
		//将计算结果加入到缓存
		cache.set(key,result);
		return result;
	}	
}

//实际需要执行的函数
function realFunc(row,age){
	console.info(row);
	console.info(age);
	return true;	
}

let row={name:"ray"};

let func=cacheFunc(realFunc);

func(row,19);
func(row,19);
func(row,19);
</script>

这里我们多调用几次后,我们可以看到,第一次是实际的运算,其他都从缓存中获取。
这里用到的知识使用到了闭包。

标签:缓存,return,js,let,result,func,方法,row
From: https://www.cnblogs.com/yg_zhang/p/18148679

相关文章

  • 实现类的注册方法
    1.抽象类@Qualifier指定绑定的注册类@Autowired@Qualifier("professionOrderSendEmailImpl")privateSendBiDataService<ProfessionOrderEntity>sendBiDataService;2.实现类@AutowiredProfessionOrderSendEmailImplprofessionOrderSendEmai......
  • freepascal TJsonDataset
    unitUnit1;{$modeobjfpc}{$H+}interfaceusesClasses,SysUtils,Forms,Controls,Graphics,Dialogs,DBCtrls,DBGrids,DB,fpjson,fpjsondataset;typeTForm1=class(TForm)DataSource1:TDataSource;DBGrid1:TDBGrid;procedureForm......
  • 30 天精通 RxJS (26):简易实作 Observable(一)
    因为实在太多读者在问要如何实作Observable,所以特别调整了本系列文章最后几篇的内容,空出一天的位置来写如何简易实作Observable。为什么是简易实作而不完整实作呢?当然这个系列的文章是希望读者能学会如何使用RxJS,而实作Observable其实只是帮助我们理解Observable的......
  • 数据分析方法论之A/B测试
    AB测试是一种统计方法,用于比较两个或多个不同版本的产品、服务或策略,以确定哪个版本能够产生更好的结果。在AB测试中,将目标人群随机分为两组,一组接触版本A,另一组接触版本B,然后收集和分析数据来评估两个版本的表现差异。AB测试最核心的原理,基于控制变量法的思想进行假设检验。控......
  • js,php,C++ 压缩算法不一致
    参考:https://yushuangqi.com/blog/2015/golang-php-gzencode-difrent.html压缩的数据:这是要压缩的数据aaaaaaaaaaaaaaaaaaa2222222222222222222222222222222顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶fffffffffffffffffffgggggggggggggggggggeeeeeeeeeeeeee对应的三种语言的最后数......
  • 前端开发中 对象 类 方法三者区别
    在前端开发中,对象、类和方法都是面向对象编程(OOP)的重要概念。它们各自有着不同的定义和作用,下面将详细解释这三者之间的区别:对象(Object):对象是现实世界或抽象概念中事物的表示。在编程中,对象是一个具体存在的实体,具有属性和方法。属性是对象的数据特征,而方法是对象能够执行的操作......
  • MATLAB 快捷键失灵解决方法
    中文版:预设->键盘->快捷方式,将Emacs默认集改为Windows默认集即可英文版:preferences->Keyboard->Shortcuts,将EmacsDefaultset改为WindowsDefaultSet即可参考链接:Ubuntu下安装MATLAB的一些问题:快捷键与中文Matlab-linux下使用......
  • js substr 与 substring 有什么区别吗
    在JavaScript中,substr和substring是用于提取字符串的两个方法,它们的功能类似,但有一些区别:1.substr(start,length)方法:参数:start:必需。要提取的子字符串的起始位置。如果为负数,表示从字符串末尾开始计数。length:可选。要提取的字符数。如果省略或为负数,则提取到字符......
  • 过氧化氢滴定方法可用的PFA器皿有哪些?
    滴定液:KMnO4标准溶液试液:H2O2商品液(3%),H2SO4(3.0mol/L)指示剂:酚酞指示剂仪器:分析天平,PFA酸式滴定管50mL,PFA移液管10mL/25mL、PFA容量瓶250mL、PFA锥形瓶250mL1、KMnO4标准溶液浓度的标定(见实验:高锰酸钾标准溶液的配制与标定)2、H2O2含量的测定用PFA移液管10mL移......
  • 【转载】WPF中Binding使用StringFormat格式化字符串方法
    原文链接:https://www.cnblogs.com/xuliming/articles/StringFormat.htmlWPF中Binding使用StringFormat格式化字符串方法 货币格式<TextBlockText="{BindingPrice,StringFormat={}{0:C}}"/>//$123.46货币格式,一位小数<TextBoxText="{BindingPrice,Stri......