1v1直播源码,保证请求时序的两种常用方法

news/2024/9/24 18:03:03

1v1直播源码,保证请求时序的两种常用方法

 


在1v1直播源码中经常遇到请求输入查找场景,防抖与截流很好处理了频繁输入问题,但是不能解决最先发起请求结果后返回,覆盖了最后一次的搜索结果,导致搜索结果不正确。我总结一下自己常用的两种方法。

一、使用时间戳来过滤返回结果
如果请求回调函数中的时间戳小于当前时间戳则返回,说明已经处理了之后的请求结果了,这个请求过时了。

// 远程搜索商品
    searchGoods(data) {if (!data) {return}if (this.isRemote) {const reqCount = new Date().getTime()this.OrderInquireQuerySpuAndUnit({ keyWord: data }).then(res => {if (reqCount < this.currentReqCount) {return}if (res.data) {if (res.data.length > 0) {this.goodsList = res.data}}}).catch(err => {console.log(err)}).finally(() => {this.currentReqCount = reqCount})}},

 

二、基于axios封装统一的请求方法
后面发起的请求会取消之前等待返回结果的请求,需要多传一个cancelTokenPath,表示当前同一个输入组件发起的请求。

export const getRequest = param => {const { cancelTokenPath, ...restQuery } = (param && param.query) || {}// cancelTokenPath是为了避免页面中多处请求的同一个接,导致错误的取消if (cancelTokenPath) {const CancelToken = axios.CancelTokenconst source = CancelToken.source()if (store[cancelTokenPath]) {store[cancelTokenPath].cancel('Canceled by the last request')}store[cancelTokenPath] = source}return new Promise((resolve, reject) => {Vue.axios.get(param.url, {params: restQuery || {},headers: param.headers || {},cancelToken: cancelTokenPath && store[cancelTokenPath].token}).then(res => { resolve(res) }).catch(err => {reject(err)})})
}

 

以上就是1v1直播源码,保证请求时序的两种常用方法, 更多内容欢迎关注之后的文章

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/46391.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

WebView2UI - 在WPF之中使用WebView2的一些经验总结

项目地址:https://github.com/skyw18/skyw18-WebView2UI webview简介与生命周期:WPF 应用中的 WebView2 入门 - Microsoft Edge Developer documentation | Microsoft Learn 具体代码可以参考微软官方示例文档 WPF 示例应用 - Microsoft Edge Developer documentation | Micr…

AbpVnext系列三 添加种子项目

一、src下面增加DbMigrations类库,注意是要.Net Framework 类型的类库,不能是.Net Standard 的。 二、添加类库后为项目添加如上三个项目 appsetting.json 配置信息{"ConnectionStrings": {"AidenAdmin": "Server=127.0.0.1;port=3306;Database=…

6. 在WEB中应用MyBatis(使用MVC架构模式)

学习目标:掌握mybatis在web应用中怎么用 mybatis三大对象的作用域和生命周期 ThreadLocal原理及使用 巩固MVC架构模式 为学习MyBatis的接口代理机制做准备实现功能:银行账户转账 使用技术:HTML + Servlet + Mybatis1. 需求描述 ​​ 2. 数据库表的设计和准备数据 创建数据库…

数字园区规划

数字园区规划 | 数字经济产业园规划、数字孪生产业园区规划设计 2024-03-10 19:00书生产业规划内容导读: 【一】数字产业园区发展环境 【二】数字产业园区市场现状 【三】数字产业园区建设需求 【四】数字园区建设赋能手段 【五】数字园区规划建设建议当下,数字经济已上升为我…

Fortran哈希函数库的使用

哈希表hash table,类似于python中的字典,可以实现基于字符串的索引。即根据输入的数据(整数,浮点数,字符串等),对应到唯一的数据。这个特性对于气象编程中的根据站点信息检索数据十分有用。由于Fortran标准库中没有功能的实现,需要自己编写函数。github已经有大神编写好…

OpenCL体系结构分析

OpenCL体系结构分析 OpenCL是一个开放的行业标准,用于对组织到单个平台中的CPU、GPU和其他离散计算设备的异构集合进行编程。它不仅仅是一种语言。OpenCL是一个用于并行编程的框架,包括一种语言、API、库和一个支持软件开发的运行时系统。例如,使用OpenCL,程序员可以编写在…

Ax86uPro路由器多平台直播录制

开源项目:https://github.com/hr3lxphr6j/bililive-go 下载程序传到路由器【建议挂载移动硬盘】:路由器安装Entware环境登录到命令行执行: opkg update --no-check-certificat opkg install ffmpeg --no-check-certificat 到bililive-go程序目录执行: ./bililive-linux-arm…

mui里点击input框是为什么会返回顶部

原文 https://blog.csdn.net/weixin_44070058/article/details/123093978 删除 mui.min.js 里的这行代码 d.contains(c)&&(d.remove(c),setTimeout(function(){window.scrollTo(b.body.scrollLeft,b.body.scrollTop)},20))关联项目FreeSql QQ群:4336577BA & Blazo…