一个请求拦截函数,可以处理重复请求,短时间内多次请求等等问题

一个拦截函数,参数为一个函数;返回为一个函数;

1.比如同时发起多个一模一样的请求,如果第一个请求在padding中的话,则不执行后续传入的请求方法;
2.比如设置一个时间,这个时间内不允许重复操作调用传入的方法;
3.比如需要第一个传入的请求函数为成功的情况下,才继续执行后续的代码

总之:就是一个拦截函数,这个函数的参数也是一个函数,在这个函数中执行传入的这个函数,且返回一个新的函数,在这个父函数中可以设置一些条件,来标记传入的这个子函数是否执行;

wrappedRequest (func) {

if (func.isRequest) {
// 这里返回一个空的promise函数,否则会报错
return () => new Promise(() => { });
}

// 没有发送请求时,这里需要发送请求,并且将isRequest标记为true
func.isRequest = true;
return async function () {
const res = await func.apply(arguments);
// 接收到请求后,将isRequest标记为false
func.isRequest = false;
return res
}
},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值