Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何像在localStorage中一样从LocalFower分配变量?_Javascript_Angularjs_Localforage - Fatal编程技术网

Javascript 如何像在localStorage中一样从LocalFower分配变量?

Javascript 如何像在localStorage中一样从LocalFower分配变量?,javascript,angularjs,localforage,Javascript,Angularjs,Localforage,请帮我做以下事情 我一直在将我的AngularJS应用程序从localStorage转换为LocalFower 在整个应用程序中,我像这样分配localStorage值 window.localStorage.setItem('localSavedValue','SavedValue'); 然后我像这样检索数据 var myValue = window.localStorage.getItem('localSavedValue'); 所以当我console.log(myValue);//它输

请帮我做以下事情

我一直在将我的AngularJS应用程序从localStorage转换为LocalFower

在整个应用程序中,我像这样分配localStorage值

window.localStorage.setItem('localSavedValue','SavedValue');
然后我像这样检索数据

var myValue = window.localStorage.getItem('localSavedValue');
所以当我console.log(myValue);//它输出“SavedValue”

当我尝试的时候,我似乎不能用LocalFounder做这个

$localForage.setItem('localSavedValue','SavedValue');
var myValue = $localForage.getItem('localSavedValue');
console.log(myValue); // returns an object.
我没有将该值设置为myValue

我确信这与承诺有关,因为当我使用回调时,我可以访问正确的“myValue”,但我希望从回调中获得它,以便在服务的其余部分中使用

还要注意的是,我在一个服务中,因此无法分配给$scope(除非我不知道如何分配)

谢谢你的帮助

谢谢 B


localfough在设计上是异步的,因此我建议您使用@RouR建议的承诺

代码清晰性的一个小改进是链返回承诺结果,但仍然无法避免异步代码的后果

$localForage.setItem('localSavedValue','SavedValue').then(function() {
    return $localForage.getItem('localSavedValue');
}).then(function(data) {
    console.log('I\'m printed second', data); 
});
console.log('I\'m printed first'); 
如果您使用的是Babel,那么这种迁移的一种更友好的方法是将其配置为使用或重写如下代码

await $localForage.setItem('localSavedValue','SavedValue');
const data = await $localForage.getItem('localSavedValue');
console.log(data);

如果您不想使用回调,为什么不使用同步本地存储呢?我担心本地存储的大小限制。您知道如何使用回调来设置可以使用的变量吗?回调通常带有自己的变量,作为形式参数传递。如果您发现自己想要将数据“移动”到现有变量中,那么很可能无法以异步方式解决问题。你需要把动词和名词联系起来,而不是把名词和动词联系起来。您找不到任何其他非异步的大型存储提供商,因此了解异步并找出如何使其为您工作是值得的。这可能不是一个简单的解决办法,但这是唯一正确的方法…非常感谢您的评论。我可以看到在回调中包装我的服务,但当我需要使用多个数据值时,我立即感到担心。您可以将整个分派/回调例程放在其他回调中。如果你正在做大量的承诺,转换成承诺是值得的,但这需要更多的学习。简言之,现在只需根据需要嵌套回调,直到它变得混乱为止,这很可能永远不会发生。
await $localForage.setItem('localSavedValue','SavedValue');
const data = await $localForage.getItem('localSavedValue');
console.log(data);