我正在尝试通过创建localForage的全局实例,将localForage支持添加到pure-form Web组件中:
// 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 实例:
<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来包装这个调用,但目前pure-form不需要Promise,我不想为此添加依赖关系。
我的想法是检查.getItem或.setItem是否需要回调,如果需要,则相应地修改代码...
arguments
变量处理。在这种情况下,length
为零。或者它可能是混合的... - trincot