函数式编程封装ajax,并实现缓存机制

本文介绍如何使用函数式编程思想封装Ajax请求并实现数据缓存。通过定义请求配置,利用XMLHttpRequest进行同步请求,结合memoize函数实现缓存机制,确保初次调用API获取数据后,后续请求直接从缓存中读取,提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用函数式编程,封装ajax,并实现数据的缓存

调用一次api,后面再调用api都是返回缓存数据

var requestConfig = {
	type: 'get', //请求类型
	url: 'http://localhost:38081/mis/test-success', //请求的url 
	data: null, //请求的数据,类型自定义
	isCache: true, //是否缓存结果
	isAsync: false //是否异步
} //定义请求体

function getData(requestConfigs) {
	xmlhttp = new XMLHttpRequest(); //创建实例
	xmlhttp.onreadystatechange = function () {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			responseData = xmlhttp.responseText
		}
	}
	xmlhttp.open(requestConfigs.type, requestConfigs.url, false); //指定同步ajax请求
	xmlhttp.send(requestConfig.data);
	return responseData
}

function memoize(f) {
	var cache = {};
	return function (requestConfig) {
		var argStr = JSON.stringify(requestConfig.url);
		if (requestConfig.isAsync) {
			setTimeout(() => {
				if (requestConfig.isCache) {
					cache[argStr] = cache[argStr] || f(requestConfig);
				} else {
					cache[argStr] = f(requestConfig);
				}
			});
		} else {
			if (requestConfig.isCache) {
				cache[argStr] = cache[argStr] || f(requestConfig);
			} else {
				cache[argStr] = f(requestConfig);
			}
		}
		return cache[argStr];
	};
}
var pureHttpCall = memoize((requestConfig) => getData(requestConfig));

function callApi() {
	pureHttpCall(requestConfig)
}

涉及的知识点:

  • 函数式编程的思想
  • js的执行机制,宏队列和微队列
  • ajax的使用
  • 箭头函数和执行器的调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值