Adjust signal again

This commit is contained in:
Schluffe
2026-08-28 10:31:39 +02:00
parent 7b3c9865fe
commit 51c1fc249d
2 changed files with 12 additions and 13 deletions
+7 -3
View File
@@ -1,10 +1,14 @@
import { Bench } from "tinybench";
const bench = new Bench({ name: "", time: 1000 });
const bench = new Bench({ name: "bench", time: 1000 });
let sink = 0;
bench.add("", () => {
sink += 1;
bench
.add("a", () => {
sink++;
})
.add("b", () => {
sink++;
});
await bench.run();
+4 -9
View File
@@ -4,22 +4,17 @@ let current: Current = null;
export function createSignal<T>(value: T): [() => T, (value: T) => void] {
let innerValue = value;
const observers: Array<Current> = [];
const indices = new Map<Current, number>();
const observers = new Set<() => void>();
const getter = () => {
if (current !== null && !indices.has(current)) {
observers.push(current);
indices.set(current, observers.length);
}
current !== null && observers.add(current);
return innerValue;
};
const setter = (value: T) => {
innerValue = value;
for (let i = 0; i < observers.length; i++) {
observers[i]!();
for (const observer of observers) {
observer();
}
};