fix(dict): 修复字典请求失败后队列未清理导致永久阻塞
This commit is contained in:
@@ -39,7 +39,7 @@ function createDictSyncHook() {
|
|||||||
const messageCallbacks = ref<DictMessageCallback[]>([]);
|
const messageCallbacks = ref<DictMessageCallback[]>([]);
|
||||||
|
|
||||||
// 重试定时器
|
// 重试定时器
|
||||||
let retryTimer: any = null;
|
let retryTimer: ReturnType<typeof setTimeout> | null = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注册字典消息回调
|
* 注册字典消息回调
|
||||||
|
|||||||
@@ -26,10 +26,16 @@ export const useDictStore = defineStore("dict", () => {
|
|||||||
if (dictCache.value[dictCode]) return;
|
if (dictCache.value[dictCode]) return;
|
||||||
// 防止重复请求
|
// 防止重复请求
|
||||||
if (!requestQueue[dictCode]) {
|
if (!requestQueue[dictCode]) {
|
||||||
requestQueue[dictCode] = DictAPI.getDictItems(dictCode).then((data) => {
|
requestQueue[dictCode] = DictAPI.getDictItems(dictCode)
|
||||||
cacheDictItems(dictCode, data);
|
.then((data) => {
|
||||||
Reflect.deleteProperty(requestQueue, dictCode);
|
cacheDictItems(dictCode, data);
|
||||||
});
|
Reflect.deleteProperty(requestQueue, dictCode);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
// 请求失败,清理队列,允许重试
|
||||||
|
Reflect.deleteProperty(requestQueue, dictCode);
|
||||||
|
throw error;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
await requestQueue[dictCode];
|
await requestQueue[dictCode];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user