前端一个页面同时多次请求一个接口可以吗?怎么解决同一页面多次请求接口的问题
methods: {
timeDataPage(){
if (!this.isInit) {
let myDate = new Date()
let year = myDate.getFullYear() //获取当前年
let startTime = myDate.getFullYear() - 10
let endTime = myDate.getFullYear() + 10
this.initSelectYear(startTime, endTime, year)
this.datePickerModel = year
this.params.year = this.datePickerModel
}
},
search() {
this.getData()
},
async getData() {
this.timeDataPage();
this.params.targetType='1'
const res = await fetchList(this.params).catch(() => {
this.isInit = true
})
this.isInit = true
if (res.code === 1) {
this.data = res.data
}
setTimeout(()=>{
this.collectDataPage();
},1000)
},
initSelectYear(a, b) {
let time = b - a
this.years = []
for (let i = 0; i < time; i++) {
this.years.push({value: b - i, label: b - i})
}
},
dateChange(type) {
this.datePickerModel = type
this.params.year = this.datePickerModel
},
async collectDataPage(){
this.params.targetType='2'
const res = await fetchList(this.params).catch(() => {
this.isInit = true
})
this.isInit = true
if (res.code === 1) {
this.collectListData = res.data
}
}
}
后端做接口限流
你想 杜绝 同时请求多次吗?
在处理重复请求的问题时,首先有一个公共的请求拦截器。
在外面创建一个Set对象。
请求拦截器接收到一个请求时,先对Set对象中进行判断,如果有当前请求的url就取消请求。
没有就将url填入Set对象中。
同时在请求结束后,将url从Set中删除掉。