Javascript 如何同步使用localfower

Javascript 如何同步使用localfower,javascript,callback,local-storage,localforage,Javascript,Callback,Local Storage,Localforage,我有一个Cordova移动应用程序,可以在localStorage中存储离线数据。最近,由于localStorage有5MB的限制,用户开始收到配额超出错误。我决定使用LocalFlow框架,但我注意到它是异步工作的。因为我不想将所有复杂的应用程序包装重写为回调函数,所以我想知道是否有某种方法可以使用localfow同步地等待getItem函数返回值 下面是我尝试执行的代码示例: localforage.setItem('testKey', 'testValue', function() {

我有一个Cordova移动应用程序,可以在localStorage中存储离线数据。最近,由于localStorage有5MB的限制,用户开始收到配额超出错误。我决定使用LocalFlow框架,但我注意到它是异步工作的。因为我不想将所有复杂的应用程序包装重写为回调函数,所以我想知道是否有某种方法可以使用localfow同步地等待getItem函数返回值

下面是我尝试执行的代码示例:

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在不更改任何其他代码的情况下返回一个值

我没有测试过这一点,也没有使用LocalFound的经验,但是我想如果您将结果设置为回调的返回值并返回它,这就是您要找的

function getValue(key) { 
  var result = localforage.getItem(key, function(err, value) {
    return value;
  });
  return result;
}

我没有测试过这一点,也没有使用LocalFough的经验,但是我想如果您将结果设置为回调的返回值并返回它,那么这就是您想要的结果

function getValue(key) { 
  var result = localforage.getItem(key, function(err, value) {
    return value;
  });
  return result;
}
据此,

LocalFower有一个双API,允许您使用节点样式 回电或承诺。如果你不确定哪一个适合你, 建议使用承诺

所以如果你愿意,你可以用任何一种。如果使用承诺,则可以使用async/wait等待结果

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;
}
据此,

LocalFower有一个双API,允许您使用节点样式 回电或承诺。如果你不确定哪一个适合你, 建议使用承诺

所以如果你愿意,你可以用任何一种。如果使用承诺,则可以使用async/wait等待结果

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;
}
请点击此处:

jsidle here:

,使用async/await:

试一试{ const value=await localfollow.getItem'somekey'; //此代码在加载值后运行 //从离线商店。 console.logvalue; }犯错误{ //如果出现任何错误,将运行此代码。 console.logerr; } ,使用异步/等待:

试一试{ const value=await localfollow.getItem'somekey'; //此代码在加载值后运行 //从离线商店。 console.logvalue; }犯错误{ //如果出现任何错误,将运行此代码。 console.logerr; }
通过这种方式,LocalFower返回Promisesee my update,LocalFower中的回调首先是节点样式的错误参数,这两种方式都不起作用,因为LocalFower返回Promise。真正地我不知道最新情况解析方式也不起作用。这种方式LocalFower返回Promisesee my update,LocalFower中的回调首先是节点样式的错误参数。这两种方式都不起作用,因为LocalFower返回Promise。真正地我不知道最新情况JSON.parse方法也不起作用。我尝试了这种方法,但也不起作用:/。请看:是的,但现在我需要将所有调用getValue的函数都更改为async。我想换一个地方,不要破坏这个脆弱的旧应用程序:我不认为还有其他方法。由于异步的性质,除非您有数据,否则您必须停止代码向前移动,并且为此您必须使用回调或async/await。我尝试了这种方法,但它也不起作用:/。请看:是的,但现在我需要将所有调用getValue的函数都更改为async。我想换一个地方,不要破坏这个脆弱的旧应用程序:我不认为还有其他方法。由于异步的性质,除非您有数据,否则您必须停止代码向前移动,并且为此您必须使用回调或异步/等待