3

localForage のグローバル インスタンスを作成して、純粋な形式のWeb コンポーネントにlocalForageサポートを追加しようとしています。

// create a global appStorage object that mimics localStorage API (greater storage)
window.appStorage = localforage.createInstance({
    driver: [
        localforage.INDEXEDDB,
        localforage.WEBSQL,
        localforage.LOCALSTORAGE
    ],
    name: 'product-name',
    version: 1.0,
    storeName: 'app'
});

storage属性を介して純粋な形式のインスタンスに割り当てます。

<pure-form src="path-to-schema.json" storage="appStorage"></pure-form>

内部的に、pure-form はwindow[self.storage]ストレージ オブジェクトへのハンドルを取得するために実行され、 を使用し.getItem.setItem値を同期的に設定および取得します。

問題は localForage が非同期であることです。つまり.getItem.setItemコールバックを介して値を返すことを期待しています。したがって、私の現在のロジックは機能しません:

// get value from web storage
var storedContent = window[self.storage].getItem('item-key');

呼び出しを Promise でラップできることはわかっていますが、現状では、純粋な形式では約束を必要としないため、このためだけにその依存関係を追加したくありません。

私がやりたいことは、コールバックが必要かどう.getItemかを確認し、.setItem必要な場合はそれに応じてコードを変更することです...

4

1 に答える 1