mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 17:36:00 +00:00
fix in cache loader
This commit is contained in:
@@ -178,19 +178,23 @@ async function getCore(loader, args) {
|
|||||||
function useCore(loader, args) {
|
function useCore(loader, args) {
|
||||||
const { url, params, reloadTrigger, transform, onLoaded } = loader(args);
|
const { url, params, reloadTrigger, transform, onLoaded } = loader(args);
|
||||||
const cacheKey = stableStringify({ url, ...params });
|
const cacheKey = stableStringify({ url, ...params });
|
||||||
|
let closed = false;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
subscribe: onChange => {
|
subscribe: onChange => {
|
||||||
async function handleReload() {
|
async function handleReload() {
|
||||||
const res = await getCore(loader, args);
|
const res = await getCore(loader, args);
|
||||||
|
if (!closed) {
|
||||||
onChange(res);
|
onChange(res);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
handleReload();
|
handleReload();
|
||||||
|
|
||||||
if (reloadTrigger) {
|
if (reloadTrigger) {
|
||||||
subscribeCacheChange(reloadTrigger, cacheKey, handleReload);
|
subscribeCacheChange(reloadTrigger, cacheKey, handleReload);
|
||||||
return () => {
|
return () => {
|
||||||
|
closed = true;
|
||||||
unsubscribeCacheChange(reloadTrigger, cacheKey, handleReload);
|
unsubscribeCacheChange(reloadTrigger, cacheKey, handleReload);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user