up
This commit is contained in:
@@ -5,8 +5,6 @@ import { ref } from 'vue'
|
|||||||
import { usersApi } from '@/api/users';
|
import { usersApi } from '@/api/users';
|
||||||
|
|
||||||
const usersInfo = ref([]);
|
const usersInfo = ref([]);
|
||||||
// 正在请求中的 userID 集合,避免重复发请求
|
|
||||||
const pendingFetch = new Set();
|
|
||||||
|
|
||||||
export const useUsersStore = defineStore('users', () => {
|
export const useUsersStore = defineStore('users', () => {
|
||||||
|
|
||||||
@@ -15,8 +13,8 @@ export const useUsersStore = defineStore('users', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function fetchUser(userID) {
|
function fetchUser(userID) {
|
||||||
if (pendingFetch.has(userID)) return
|
// 缓存命中则不再请求(依赖 usersInfo 的响应式)
|
||||||
pendingFetch.add(userID)
|
if (getUserFromUserID(userID)) return
|
||||||
usersApi.getUserInfoFromUserID(userID).then((r) => {
|
usersApi.getUserInfoFromUserID(userID).then((r) => {
|
||||||
if (r.errCode == 0 && r.raw.err_code == 0 && r.raw.return?.userinfo) {
|
if (r.errCode == 0 && r.raw.err_code == 0 && r.raw.return?.userinfo) {
|
||||||
// 防止并发写入重复数据
|
// 防止并发写入重复数据
|
||||||
@@ -24,8 +22,6 @@ export const useUsersStore = defineStore('users', () => {
|
|||||||
usersInfo.value.push(r.raw.return.userinfo)
|
usersInfo.value.push(r.raw.return.userinfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).finally(() => {
|
|
||||||
pendingFetch.delete(userID)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user