fix: 修复因没有清空计时器导致获取用户列表请求第二次会永远pending

相关内容: createAutoMergedRequest
pull/49/head
moonrailgun 3 years ago
parent e268f48fed
commit 600df69aea

@ -49,6 +49,7 @@ export { useLanguage } from './i18n/language';
// hooks // hooks
export { createUseStorageState } from './hooks/factory/createUseStorageState'; export { createUseStorageState } from './hooks/factory/createUseStorageState';
export { useAvailableServices } from './hooks/model/useAvailableServices'; export { useAvailableServices } from './hooks/model/useAvailableServices';
export { useUserInfoList } from './hooks/model/useUserInfoList';
export { useUsernames } from './hooks/model/useUsernames'; export { useUsernames } from './hooks/model/useUsernames';
export { export {
useUserSettings, useUserSettings,
@ -182,11 +183,7 @@ export {
useGroupTextPanelUnread, useGroupTextPanelUnread,
} from './redux/hooks/useGroup'; } from './redux/hooks/useGroup';
export { useGroupMemberMute } from './redux/hooks/useGroupMemberMute'; export { useGroupMemberMute } from './redux/hooks/useGroupMemberMute';
export { export { useUserInfo, useUserId } from './redux/hooks/useUserInfo';
useUserInfo,
useUserId,
useUserInfoList,
} from './redux/hooks/useUserInfo';
export { useUnread } from './redux/hooks/useUnread'; export { useUnread } from './redux/hooks/useUnread';
export { export {
userActions, userActions,

@ -1,10 +1,11 @@
import { useMemo } from 'react'; import { useMemo } from 'react';
import { useUserInfoList } from '../..';
import { GroupInfo, GroupPanel, GroupPanelType } from '../../model/group'; import { GroupInfo, GroupPanel, GroupPanelType } from '../../model/group';
import type { UserBaseInfo } from '../../model/user'; import type { UserBaseInfo } from '../../model/user';
import { isValidStr } from '../../utils/string-helper'; import { isValidStr } from '../../utils/string-helper';
import { useAppSelector } from './useAppSelector'; import { useAppSelector } from './useAppSelector';
import { useUnread } from './useUnread'; import { useUnread } from './useUnread';
import { useUserId, useUserInfoList } from './useUserInfo'; import { useUserId } from './useUserInfo';
/** /**
* *

@ -1,5 +1,3 @@
import { getCachedUserInfo } from '../../cache/cache';
import { useAsync } from '../../hooks/useAsync';
import type { UserLoginInfo } from '../../model/user'; import type { UserLoginInfo } from '../../model/user';
import { useAppSelector } from './useAppSelector'; import { useAppSelector } from './useAppSelector';
@ -16,14 +14,3 @@ export function useUserInfo(): UserLoginInfo | null {
export function useUserId(): string | undefined { export function useUserId(): string | undefined {
return useUserInfo()?._id; return useUserInfo()?._id;
} }
/**
* id
*/
export function useUserInfoList(userIds: string[]) {
const { value: userInfos = [] } = useAsync(() => {
return Promise.all(userIds.map((userId) => getCachedUserInfo(userId)));
}, [userIds.join(',')]);
return userInfos;
}

@ -15,9 +15,10 @@ export function createAutoMergedRequest<T, R>(
windowMs = 200 windowMs = 200
): (params: T) => Promise<R> { ): (params: T) => Promise<R> {
let queue: QueueItem<T, R>[] = []; let queue: QueueItem<T, R>[] = [];
let timer: number; let timer: number | null = null;
async function submitQueue() { async function submitQueue() {
timer = null; // 清空计时器以接受后续请求
const _queue = [...queue]; const _queue = [...queue];
queue = []; // 清空队列 queue = []; // 清空队列
const ret = fn(_queue.map((q) => q.params)); const ret = fn(_queue.map((q) => q.params));

Loading…
Cancel
Save