我继续搜索,听说IndexedDb没有观察者。那么,如何跟踪更改值呢?这是不可能的吗?我目前正在使用IndexedDb,使用idb-keyval。你有什么解决的办法吗?或者我应该使用像localfresh这样的库来代替?
mec1mxoz1#
唯一的方法是使用中间函数或将代码注入库或修补IndexedDB本身使用中间代码的版本是最佳的:
import { get, set } from "idb-keyval" const bus = new EventBus<{ 'change:counter': number }>() const cast = new BroadcastChannel('watcher-indexeddb') function mget(name: string): Promise<any> { return get(name) } async function mset(name: string, value: any): Promise<void> { await set(name, value) bus.emit(`change:${name}`, value) cast.postMessage({ type: `change:${name}`, value }) } cast.addEventListener("message", event => { if (event.data?.type?.startsWith("change")) bus.emit(event.data.type, event.data.value) }) bus.on("change:counter", value => { console.log("Counter changed to %s", value) }) // Usage: mset('counter', 12)
字符串
1条答案
按热度按时间mec1mxoz1#
唯一的方法是使用中间函数或将代码注入库或修补IndexedDB本身
使用中间代码的版本是最佳的:
字符串