一个拦截函数,参数为一个函数;返回为一个函数;
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
}
},