Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

205
Visualizações
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; }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

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'); });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda