A library for series query with same params, keep result in order
npm install series-query下面是示例,其中未使用本库之前简单的表格翻页 BUG 如下
(其中第一页返回结果延迟1s, 第二页 2s,第三页 3s, 第四页 4s,代码可在示例网站中查看源代码):

使用本库之后的结果:

query(params) => Promise 发起连续查询setQueryParams(params) => void 设置需要固化的参数getStaleParams() => void 获取除可变参数外的参数setGlobalOptions(options) => void 设置全局的默认参数,必须在 new 实例之前执行SeriesOrderError 是重复的错误对象,其请求值挂在 data 下,需要自行判断是否丢弃该值,可参见后续的示例
javascript
// 创建实例,在请求之前创建实例
this.pageQuery = new SeriesQuery({
func: apiFetch,
onLoadingChange: (val) => {
this.loading = val
}
})// 填入需要固定的查询参数 params
this.pageQuery.setQueryParams(this.filter)
// 查询分页的列表
getList () {
const params = {
page_size: this.page.page_size,
page_num: this.page.page_num,
}
return this.pageQuery.query(params)
.then((res) => {
if (res instanceof Error && res.name === 'SeriesOrderError') {
return
}
if (res.error_no !== 0) {
alert('error')
return
}
this.list.data = (res.data && res.data.list) || []
})
}
// 获取除可变参数外的数据
this.pageQuery.getStaleParams()
`$3
此模式下无需设置 stale 内的参数,即保证每次查询参数都是最新的
`javascript
this.pageQuery = new SeriesQuery({
func: apiFetch,
onLoadingChange: (val) => {
this.loading = val
},
stale: false
})// 查询分页的列表
getList () {
const params = {
otherKey: 'value',
page_size: this.page.page_size,
page_num: this.page.page_num,
}
return this.pageQuery.query(params)
.then((res) => {
if (res instanceof Error && res.name === 'SeriesOrderError') {
return
}
if (res.error_no !== 0) {
alert('error')
return
}
this.list.data = (res.data && res.data.list) || []
})
}
``