我在关注https://quasar.dev/vue-components/select#lazy-loading我有
@filter="filterFn"
@filter-abort="abortFilterFn"
在q选择和滤波器中Fn是
filterFn (val, update, abort) {
if (options.value !== null) {
// already loaded
update()
return
}
setTimeout(() => {
update(() => {
options.value = store.data;
})
}, 2000)
},
所以当我的API取回数据时,它会把数据放到pinia存储中,这发生在从相邻组件的另一个q-select中选择选项时,我会观察q-select的模型,当它发生变化时,我调用我的API传递参数(我现在知道,因为选择)和更新存储一旦我有数据。然而,我必须等待数据回来,这就是为什么我'我使用的是惰性加载。它很有效,但是setTimeout并不高效。有时候数据返回的非常快,有时候如果有很多选项的话,加载的时间只有几秒钟。有时候我不知道要花多长时间。所以如果时间超过2秒,函数就不会加载到我的q-select中。它只是显示为空白。但是我没有我不想把它设置得更高,让用户为一个可能只需要一秒钟的调用等待3秒钟。我正在使用承诺和解析来获取数据,我如何异步延迟加载呢?
1条答案
按热度按时间r3i60tvu1#
你可以删除timeout函数。在这个例子中,它只是用来模拟一个API的延迟响应,但在真实的生活中并不是必需的。如果你依赖一个Pinia商店,你可能会想把你的商店数据作为一个计算的 prop 返回,以便正确地观察api的响应。