Deduplicate subject updates. Fixes #3.
This commit is contained in:
parent
3617582d37
commit
4d0cc4b2f7
|
@ -95,10 +95,14 @@ export class Graph<SubjectId, ObjectId> implements ObservingGraph<ObjectId> {
|
||||||
|
|
||||||
if (workSet.size === 0) break;
|
if (workSet.size === 0) break;
|
||||||
|
|
||||||
|
const updatedSubjects = new FlexSet(this.subjectIdCanonicalizer);
|
||||||
workSet.forEach(objectId => {
|
workSet.forEach(objectId => {
|
||||||
this.observersOf(objectId).forEach((subjectId: SubjectId) => {
|
this.observersOf(objectId).forEach((subjectId: SubjectId) => {
|
||||||
this.forgetSubject(subjectId);
|
if (!updatedSubjects.has(subjectId)) {
|
||||||
this.withSubject(subjectId, () => repairNode(subjectId));
|
updatedSubjects.add(subjectId);
|
||||||
|
this.forgetSubject(subjectId);
|
||||||
|
this.withSubject(subjectId, () => repairNode(subjectId));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue