You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte中Readable.subscribe的第二个invalidate参数是什么?

关于Svelte Readable Store的「invalidate cleanup callback」详解

核心作用

这个回调函数是readable store的start函数的返回值,当store的最后一个订阅者取消订阅时自动触发,用来清理start阶段创建的各类资源,避免内存泄漏。

简单示例

比如我们创建一个每秒更新时间的readable store,在start里启动定时器,清理回调负责关闭定时器:

import { readable } from 'svelte/store';

const currentTime = readable(new Date(), (set) => {
  // start阶段:启动定时器,每秒更新时间
  const timer = setInterval(() => {
    set(new Date());
  }, 1000);

  // 返回的就是invalidate cleanup callback
  return () => {
    clearInterval(timer); // 清理定时器
    console.log('定时器已清除,资源释放');
  };
});

当页面中所有订阅currentTime的组件都被销毁(或者主动取消订阅),这个清理回调就会执行,把定时器关掉,不会让它在后台继续运行浪费资源。

常见使用场景

  • 清理定时器/间隔任务
  • 移除DOM事件监听(比如window.resize)
  • 关闭WebSocket连接或者取消API请求
  • 释放其他会持续占用内存的资源

内容的提问来源于stack exchange,提问作者Sámal Rasmussen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:04:51