elementUI 因为异步查询时间不同 导致table赋值发生错乱
开发/前端 · 阅读 1467 · 点赞 0
先说产生原因, 上图:
这是一个列表列表的请求, 带条件查询返回结果比较快, 会被查询所有慢请求的结果覆盖掉.
这里我们使用axios的方法:
// cancel是一个变量 用来保存关闭的回调方法
if (cancel) cancel()
await getTaskList(params, new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel = c
})).then(res => {
this.pageTableData = res.list
this.total = res.totalNum
this.tableLoading = false
}).catch(err => {
if (!axios.isCancel(err)) {
this.pageTableData = []
this.tableLoading = false
}
})
复制代码
api层
// request 是对axios的封装
export function getTaskList(query, CancelToken) {
return request({
url: '/task/list',
method: 'get',
params: query,
cancelToken: CancelToken
})
}
复制代码
如果拦截器中设置公共错误处理方法 需要在拦截器里也配置一下isCancel
作者:圣轩
链接:https://juejin.cn/post/6976907172466655263
来源:稀土掘金