snowflake bug fix
This commit is contained in:
parent
12cc5dffa5
commit
f1d9fdbe3c
2 changed files with 8 additions and 8 deletions
|
@ -1,8 +1,8 @@
|
||||||
class SnowFlake {
|
class SnowFlake {
|
||||||
id;
|
id;
|
||||||
static SnowFlakes = new Map();
|
static SnowFlakes = new Map();
|
||||||
static FinalizationRegistry = new FinalizationRegistry((id) => {
|
static FinalizationRegistry = new FinalizationRegistry((a) => {
|
||||||
SnowFlake.SnowFlakes.delete(id);
|
SnowFlake.SnowFlakes.get(a[1]).delete(a[0]);
|
||||||
});
|
});
|
||||||
obj;
|
obj;
|
||||||
constructor(id, obj) {
|
constructor(id, obj) {
|
||||||
|
@ -20,7 +20,7 @@ class SnowFlake {
|
||||||
}
|
}
|
||||||
this.id = id;
|
this.id = id;
|
||||||
SnowFlake.SnowFlakes.get(obj.constructor).set(id, new WeakRef(this));
|
SnowFlake.SnowFlakes.get(obj.constructor).set(id, new WeakRef(this));
|
||||||
SnowFlake.FinalizationRegistry.register(this, id);
|
SnowFlake.FinalizationRegistry.register(this, [id, obj.constructor]);
|
||||||
this.obj = obj;
|
this.obj = obj;
|
||||||
}
|
}
|
||||||
static getSnowFlakeFromID(id, type) {
|
static getSnowFlakeFromID(id, type) {
|
||||||
|
@ -34,7 +34,7 @@ class SnowFlake {
|
||||||
{
|
{
|
||||||
const snowflake = new SnowFlake(id, undefined);
|
const snowflake = new SnowFlake(id, undefined);
|
||||||
SnowFlake.SnowFlakes.get(type).set(id, new WeakRef(snowflake));
|
SnowFlake.SnowFlakes.get(type).set(id, new WeakRef(snowflake));
|
||||||
SnowFlake.FinalizationRegistry.register(snowflake, id);
|
SnowFlake.FinalizationRegistry.register(this, [id, type]);
|
||||||
return snowflake;
|
return snowflake;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
class SnowFlake<x>{
|
class SnowFlake<x>{
|
||||||
public readonly id:string;
|
public readonly id:string;
|
||||||
private static readonly SnowFlakes:Map<any,Map<string,WeakRef<SnowFlake<any>>>>=new Map();
|
private static readonly SnowFlakes:Map<any,Map<string,WeakRef<SnowFlake<any>>>>=new Map();
|
||||||
private static readonly FinalizationRegistry=new FinalizationRegistry((id:string)=>{
|
private static readonly FinalizationRegistry=new FinalizationRegistry((a:[string,any])=>{
|
||||||
SnowFlake.SnowFlakes.delete(id);
|
SnowFlake.SnowFlakes.get(a[1]).delete(a[0]);
|
||||||
});
|
});
|
||||||
private obj:x;
|
private obj:x;
|
||||||
constructor(id:string,obj:x){
|
constructor(id:string,obj:x){
|
||||||
|
@ -20,7 +20,7 @@ class SnowFlake<x>{
|
||||||
}
|
}
|
||||||
this.id=id;
|
this.id=id;
|
||||||
SnowFlake.SnowFlakes.get(obj.constructor).set(id,new WeakRef(this));
|
SnowFlake.SnowFlakes.get(obj.constructor).set(id,new WeakRef(this));
|
||||||
SnowFlake.FinalizationRegistry.register(this,id);
|
SnowFlake.FinalizationRegistry.register(this,[id,obj.constructor]);
|
||||||
this.obj=obj;
|
this.obj=obj;
|
||||||
}
|
}
|
||||||
static getSnowFlakeFromID(id:string,type:any):SnowFlake<any>{
|
static getSnowFlakeFromID(id:string,type:any):SnowFlake<any>{
|
||||||
|
@ -35,7 +35,7 @@ class SnowFlake<x>{
|
||||||
const snowflake=new SnowFlake(id,undefined);
|
const snowflake=new SnowFlake(id,undefined);
|
||||||
|
|
||||||
SnowFlake.SnowFlakes.get(type).set(id,new WeakRef(snowflake));
|
SnowFlake.SnowFlakes.get(type).set(id,new WeakRef(snowflake));
|
||||||
SnowFlake.FinalizationRegistry.register(snowflake,id);
|
SnowFlake.FinalizationRegistry.register(this,[id,type]);
|
||||||
|
|
||||||
return snowflake;
|
return snowflake;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue