Skip to content

Commit ab44e92

Browse files
committed
fix: fault tolerance when no dependencies for trigger()
1 parent 634d774 commit ab44e92

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,15 +193,15 @@ export function trigger(fn: () => void) {
193193
fn();
194194
} finally {
195195
activeSub = prevSub;
196-
do {
197-
const link = sub.deps!;
196+
while (sub.deps !== undefined) {
197+
const link = sub.deps;
198198
const dep = link.dep;
199199
unlink(link, sub);
200200
if (dep.subs !== undefined) {
201201
propagate(dep.subs);
202202
shallowPropagate(dep.subs);
203203
}
204-
} while (sub.deps !== undefined);
204+
}
205205
if (!batchDepth) {
206206
flush();
207207
}

tests/trigger.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { expect, test } from 'vitest';
22
import { computed, effect, trigger, signal } from '../src';
33

4+
test('should not throw when triggering with no dependencies', () => {
5+
trigger(() => { });
6+
});
7+
48
test('should trigger updates for dependent computed signals', () => {
59
const arr = signal<number[]>([]);
610
const length = computed(() => arr().length);

0 commit comments

Comments
 (0)