首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同步使用localForage

如何同步使用localForage
EN

Stack Overflow用户
提问于 2019-02-07 16:35:05
回答 3查看 4.4K关注 0票数 3

我有一个科尔多瓦移动应用程序,将离线数据存储在localStorage中。最近用户开始收到QUOTA_EXCEEDED_ERR错误,因为localStorage有5MB的限制。我决定使用"localForage“框架,但我注意到它是异步工作的。因为我不想重写所有复杂的应用程序包装到回调函数中,所以我想知道是否有什么方法可以同步使用"localForage“(等到getItem函数返回值)。

下面是我想要做的代码示例:

代码语言:javascript
复制
localforage.setItem('testKey', 'testValue', function() {
  var value = getValue('testKey');

  console.log(value); // here I get undefined, but I want to get a value
});

function getValue(key) { // I want this function to return value
  var result;
    localforage.getItem(key, function(value) {
    result = value;
  });

  return result;
}

我希望getValue()在不更改任何其他代码的情况下返回值

EN

回答 3

Stack Overflow用户

发布于 2019-02-07 17:02:28

根据这个link

localForage有一个双重接口,允许您使用Node式回调或Promise。如果您不确定哪一个适合您,建议您使用Promises。

因此,如果您愿意,您可以使用它们中的任何一个。如果使用promises,您可以使用async/await等待结果

代码语言:javascript
复制
localforage.setItem('testKey', 'testValue', async function() {
  var value = await getValue('testKey')

  console.log(value); // here I get undefined, but I want to get a value
});

 async function getValue(key) { 
  var result = await localforage.getItem(key);
  return result;
}

jsfiddle

票数 0
EN

Stack Overflow用户

发布于 2020-04-13 15:36:11

代码语言:javascript
复制
localforage.setItem('testKey', 'testValue', async function() {//declare function as async
  var value = await getValue('testKey'); //wait for the value

  console.log(value); // "testValue" value should show in console
});

//declare function as async
async function getValue(key) {
  var result = await localforage.getItem(key); //wait for the localforage item

  return result;
}

JSFiddle地址:https://jsfiddle.net/mvdgxorL/

票数 0
EN

Stack Overflow用户

发布于 2020-08-29 20:13:19

https://localforage.github.io/localForage/#data-api-getitem,使用async/await

代码语言:javascript
复制
try {
    const value = await localforage.getItem('somekey');
    // This code runs once the value has been loaded
    // from the offline store.
    console.log(value);
} catch (err) {
    // This code runs if there were any errors.
    console.log(err);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54569232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档