• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

173
Views
Detectar cuando la tienda esbelta ya no se usa

Estoy haciendo una tienda esbelta personalizada envolviendo una tienda de escritura esbelta.

Quiero detectar cuando esa tienda no está suscrita por ningún componente; cuando el número de suscripciones es 0

Mi objetivo es limpiar algunos recursos externos pesados (websockets) que estaban vinculados a la tienda personalizada cuando nadie la estaba usando.

Actualmente, estoy contando las suscripciones y cancelaciones de suscripciones ajustando el método subscribe(). Funciona como se esperaba . Pero me parece un truco desagradable.

Mi pregunta: ¿Existe una forma estándar/limpia de lograr este comportamiento en Svelte?

Si no, ¿puede alguien con más experiencia en Javascipt y Svelte confirmar si esto es legítimo?

Demostración en: 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, callback); return () => { subscribercount--; console.log("subscribercount--", subscribercount); if (subscribercount == 0) { // ------------------------------- // Free up resources // I want a clean way to get here // ------------------------------- console.log("Cleaning up..."); } return wunsubscribe(); } } // Some external calls here let store = { subscribe: wsubscribe, set: newvalue => { set(newvalue); // Some external calls here }, update: update }; // Some external calls here return store; }
almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Sí, está integrado en la tienda y documentado aquí .

de los documentos

Si se pasa una función como segundo argumento, se llamará cuando el número de suscriptores pase de cero a uno (pero no de uno a dos, etc.). A esa función se le pasará una función establecida que cambia el valor de la tienda. Debe devolver una función de parada que se llama cuando el recuento de suscriptores pasa de uno a cero.

por lo que haría por ejemplo:

 const count = writable(0, () => { console.log('got a subscriber'); return () => console.log('no more subscribers'); });
almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error