前端同一个接口频繁调用,只处理最后一次返回

问题:

在做项目时候发现,一个页面中有多个Tag,每个Tag对应的数据调用的是同一个接口,参数不同,在快送切换Tag时,展示的是前一个请求返回的数据

解决办法:

取消请求。利用Cancel Token或者AbortController,当第二次请求数据接口时,取消第一次的请求。

id查询。每次向后台进行数据请求时带上唯一的id,在渲染时通过id来选择数据进行渲染。

③前端闭包记录每次请求的id,渲染时通过id来选择数据进行渲染。

前两种没来得及研究,使用第三种方案解决

简易实现如下:

const cache = {};
const asyncDebounce = (key) => {
const time = newDate().getTime();
cache[key] = time;
return () => cache[key] === time;
};

使用方法:

function test(p){
// 同一数据接口的key,可以使用url来作为key
const isValid = asyncDebounce('test');
const result = new Promise((resolve) => setTimeout(() => resolve(p),3000));
result.then(res => {
if(isValid()){
  // 只会拿到最后一次的数据
 }})
}

参考,转载:https://developer.aliyun.com/article/795869

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWT(JSON Web Token)是一种轻量级的身份验证和授权机制,它可以作为前后端分离应用中的一种认证方式。在Vue3前端中使用JWT保证是一次会话,需要考虑JWT令牌的过期时间、刷新机制等问题。以下是一个具体的例子: 1. 后端生成JWT令牌 后端在用户登录验证成功后,生成JWT令牌,并将其返回前端。JWT令牌中包含了用户的一些基本信息,如用户ID、用户名等,同时也包含了过期时间信息。 2. 前端将JWT令牌存储到本地存储中 前端在接收到JWT令牌后,将其存储到本地存储中,如localStorage。 3. 前端每次发送请求时将JWT令牌携带在请求头中 前端在每次发送请求时,都需要将JWT令牌携带在请求头中,以便后端进行身份验证和授权。请求头中的Authorization字段应该是Bearer Token格式,如: ``` Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ``` 4. 前端定时检查JWT令牌的过期时间 前端需要定时检查JWT令牌的过期时间,一旦过期,就需要重新向后端请求生成新的JWT令牌。可以使用定时器或者Vue3中的watch特性来实现。 5. 后端提供刷新JWT令牌的接口 为了避免用户频繁登录,后端可以提供一个刷新JWT令牌的接口。当JWT令牌即将过期时,前端可以调用接口来获取新的JWT令牌。在刷新JWT令牌时,后端需要对JWT令牌的有效期进行延长,并将新的JWT令牌返回前端。 综上所述,Vue3前端中使用JWT保证是一次会话需要考虑JWT令牌的过期时间、刷新机制等问题。前端需要定时检查JWT令牌的过期时间,并在需要时调用后端提供的刷新JWT令牌的接口。这样可以确保用户在一定时间内能够保持登录状态,提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值