我正在通过环绕一个精简的可写存储来创建一个自定义的精简存储。
我想检测该商店何时未被任何组件订阅;当订阅数为0时
我的目标是清除一些在无人使用时与自定义存储绑定的大量外部资源(websockets)。
目前,我通过环绕 subscribe( ) 方法来计算订阅和取消订阅。它按预期工作。但对我来说,这看起来像是一个令人讨厌的黑客攻击。
我的问题:在 Svelte 中是否有一个标准/干净的方法来实现这种行为?
如果没有,在 Javascipt 和 svelte 方面有更多经验的人可以确认这是否合法吗?
演示:https://svelte.dev/repl/f4e24fb5c56f457a94bf9cf645955b9f ?version=3.43.1
import { writable } from 'svelte/store';
// Instanciate the store
export let store = MakeStore();
// By design, I want a function that returns a custom svelte store
export function MakeStore(initialValue = null) {
const { subscribe, set, update } = writable(initialValue);
let subscribercount = 0;
let wsubscribe = function (run, callback) {
subscribercount++;
console.log("subscribercount++", subscribercount);
let wunsubscribe = subscribe(run, …Run Code Online (Sandbox Code Playgroud) javascript javascript-objects svelte svelte-component svelte-store