javascript - Svelte:如何手动停止订阅?
问题描述
我有一个商店,它会根据用户的操作不时获取数据。这是一个商店,因为它的数据在全球范围内使用,主要是所有组件都需要最新的可用数据。
但是,对于一个特定的组件,我只需要加载第一个数据。
对于这个组件,没有理由subscribe()
在第一次获取后保持函数运行。那么,我怎样才能停止这个订阅功能呢?
Svelte doc's uses中的唯一示例onDestroy()
,但我需要手动停止它subscribe()
。
我尝试了一个简单的“计数”(如果计数> 1,则取消订阅),但它不起作用。
import user from './store'
let usersLoaded = 0
const unsubscribe = user.subscribe(async (data) => {
if(data.first_name !== null) {
usersLoaded = usersLoaded + 1
}
if(usersLoaded > 1) {
unsubscribe;
}
});
这是一个完整的工作 REPL:
→ https://svelte.dev/repl/95277204f8714b4b8d7f72b51da45e67?version=3.35.0
解决方案
我不得不使用unsubscribe()
而不是unsubscribe
这是经过一些改进的最终工作 REPL: https ://svelte.dev/repl/95277204f8714b4b8d7f72b51da45e67?version=3.35.0
推荐阅读
- spring-boot - Spring Boot 微服务通过 Https 从服务器获取配置
- reactjs - 是否可以创建一个反应组件并在其他项目 html 中使用它?
- python - pandas - 根据“下一个”行值创建新列
- angular - IIS Angular Page 无法加载资产文件夹/页面
- sql - SQL Server 替换
- list - 如何从下面的代码中消除循环
- powershell-core - 用于 Linux 的 Powershell 核心 sqlserver 模块中缺少 Invoke-Sqlcmd cmlet
- metal - 金属中的文本渲染
- azure - 从本地 SSIS 处理 Azure SSAS 多维数据集:我需要一个虚拟 Office365 帐户吗?
- css - 悬停状态不适用于异物