当前位置: 首页 > article >正文

uniapp uni.request重复请求处理

类似这种切换tab时,如果操作很快并且网络不太好,就出现数据错乱,在网上查了一圈,有一个使用uview拦截处理的,但是原生uni.requse没有找到详细的解决办法,就查到使用 abort 方法,我自己封装了一个,试了一下效果还可以。

request.js 

const pending = [];    // 用来记录队列中的请求

// 判断是否有重复的请求并移除
let removePending = (config) => {
	for (let p = 0; p < pending.length; p++) {
		console.log(pending[p]);
		if (pending[p].u === config.url?.split("?")[0] + "&" + config.method) {
			//当当前请求在数组中存在时执行函数体
			pending[p].requestTask.abort();
			pending.splice(p, 1); //数组移除当前请求
		}
	}
};

export function request(options) {
	return new Promise((reslove, reject) => {
        // 每次发送请求之前判断一下
		removePending(options);
		const requestTask = uni.request({
            ...,
			complete: (res) => {
				// 从请求队列中移除已经执行完成的请求
				const excutingIndex = pending.findIndex(item => item.requestTask === requestTask)
				pending.splice(excutingIndex, 1)
			}
		})
        //把请求加入队列数组中
		pending.push({
			u: options.url?.split("?")[0] + "&" + options.method,
			requestTask: requestTask,
		});
	})
}


http://www.kler.cn/a/554126.html

相关文章:

  • 【算法】002、编程实现社会问题
  • 【GPT】从GPT1到GPT3
  • Soft Actor-Critic (SAC)算法
  • Qt:容器类控件
  • LVS-nat模式
  • 深入解析TLS协议:保障网络通信安全的关键技术
  • 力扣习题笔记
  • Sklearn常用算法及建模流程总结
  • element-plus树形数据与懒加载的实现
  • matlab下载安装图文教程
  • Excel核心函数VLOOKUP全解析:从入门到精通
  • 51单片机学习之旅——定时器
  • Jetson AGX 安装 VScode 教_ubuntu1804
  • J3打卡——DenseNet模型实现鸟类分类
  • Linux软硬链接与动静态库
  • 调用deepseek接口
  • ⭐ Unity 横向滑动列表 首尾相连 轮转图
  • Rust 面试题
  • 机器学习·数据处理
  • 【Python爬虫(17)】突破爬虫IP限制,解锁数据抓取新姿势