web前端请求库——axios
axios是基于promise封装的web,node请求库;
-
param get请求中url中的请求参数; api/list?parentId=0
-
data post请求中data请求参数:{supplierList: []}
-
配置的优先级 axios默认的配置 < 实例的配置 < 接口config的配置
-
拦截器 axios配置request拦截器和response拦截器;对请求的请求和相应进行拦截
axios.interceptors.response.use( response => {}, error => {});
axios.interceptors.request.use( resquest => {}, error => {})
业务BFF层请求
- 框架中,Application中统一去实例化了httpClient对象, 然后去调get这些方法,将这些方法返回的结果,统一代理到application中的processData中统一管理;
- 就要将processData方法,为目标对象添加增强,将此方法传入内部对象中;
- egg框架中 query来获取get请求的参数; body来获取post的请求参数; url中的参数就由ctx.params中获取;
Promise.resolve & Promise.reject
Promise.resolve();
将一个对象转换为promise对象,该实例状态为resolve;
Promise.resolve(res); => new Promise(resolve => resolve(res));
Promise.reject();
将一个对象转换为Promise对象,该实例状态为reject;
Promise.reject(err) => new Promise((resolve,reject) => reject(err)))
节流和防抖
防抖函数—不抖-如果发生就清除重新开始;— 如果这段时间,又被触发,就重新等待这段时间;
function debunce(func, time) {
let timer = null;
return () => {
if(immediate) {
func.apply(this, arguments);
immediate = false;
}
if(timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
func.apply(this. arugments);
}, time)
}
}
节流函数 -节流—如果发生-就丢弃
function throtte(func, time,immediate) {
let timer = null;
return () => {
if(immediate) {
func.apply(this, arguments);
immediate = false;
}
if(timer) return;
timer = setTimeout(() => {
func.apply(this, arguments);
clearTimeout(timer);
timer = null
}, wait)
}
}