You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WebCAD/src/Common/AppCache.ts

44 lines
1.0 KiB

import { CADObject } from "../DatabaseServices/CADObject";
class Appcache
{
private _cacheMap: Map<string, any> = new Map();
//在缓存排钻的时候,我们避免它重复缓存
_DrillCacheed = new Set<string>();
has(key: string)
{
return this._cacheMap.has(key);
}
get(key: string): any | undefined
{
let val = this._cacheMap.get(key);
if (val === undefined) return;
if (typeof val === "string" || typeof val === 'number')
return val;
if (val instanceof CADObject)
return val.Clone();
if (Array.isArray(val) && val[0] instanceof CADObject)
return val.slice();
return JSON.parse(JSON.stringify(val));
}
set<T>(key: string, value: T)
{
this._cacheMap.set(key, value);
}
clear()
{
this._DrillCacheed.clear();
this._cacheMap.clear();
}
delete(k: string)
{
this._cacheMap.delete(k);
}
}
export const appCache = new Appcache();