小编Keb*_*Keb的帖子

异步初始化自定义 Svelte 存储

背景
我正在尝试使用 Svelte 和 Tauri 开发跨平台桌面应用程序。
当应用程序启动时,我需要将 settings.json 文件从文件系统加载到自定义 Svelte 存储中。
它需要是一个自定义存储,因为我必须在写入数据之前使用自定义设置函数验证数据。
存储将保存一个对象。

我使用的是常规 Svelte,而不是 Svelte-kit,因为不需要 SSR。

问题

  1. Tauri 的 fs-api 中没有任何同步方法来读取文件
  2. Svelte 似乎没有任何直观的方法可以找到这样做

测试

  • 按照 Svelte 的 PromiseStore 示例,这适用于常规商店,但不适用于自定义商店,因为无法访问自定义设置方法
  • 使用递归超时函数等待读取文件
  • 使用 while 循环等待读取文件
  • 尝试找到一种在 Svelte 初始化之前将数据加载到全局变量中的方法

示例
如果我要发布所有失败的尝试,那么代码将会很多,因此我将提供一个示例来说明我正在尝试实现的目标。
当 createStore 不是异步时,代码中的所有内容都有效,除了读取设置文件之外。

import { writable, get as getStore } from 'svelte/store'; // Svelte store
import _set from 'lodash.set';                            // Creating objects with any key/path
import _merge from 'lodash.merge';                        // Merging objects
import { fs } from '@tauri-apps/api';                     // Accessing local …
Run Code Online (Sandbox Code Playgroud)

svelte svelte-store

9
推荐指数
1
解决办法
3970
查看次数

标签 统计

svelte ×1

svelte-store ×1