【发布时间】:2015-02-07 23:40:19
【问题描述】:
请帮我解决以下问题。
我一直在将我的 AngularJS 应用程序从 localStorage 转换为 localForage。
在我的整个应用程序中,我都像这样分配 localStorage 值。
window.localStorage.setItem('localSavedValue','SavedValue');
然后我像这样检索数据,
var myValue = window.localStorage.getItem('localSavedValue');
所以当我 console.log(myValue); // 它输出'SavedValue'
我尝试使用 localForage 时似乎无法做到这一点,
$localForage.setItem('localSavedValue','SavedValue');
var myValue = $localForage.getItem('localSavedValue');
console.log(myValue); // returns an object.
我没有将值设置为 myValue。
我确信这与承诺有关,因为当我使用回调时,我可以访问正确的“myValue”,但是我想将它从回调中取出,以便在服务的其余部分中使用。
还要注意,我在服务中,因此无法分配给 $scope(除非我不知道如何分配)。
感谢任何帮助。
谢谢 乙
【问题讨论】:
-
如果你不想使用回调,为什么不直接使用同步localStorage?
-
我担心本地存储的大小限制。你知道我如何使用回调来设置我可以使用的变量吗?
-
回调通常带有自己的变量,作为形式参数传递。如果您发现自己想要将数据“移动”到现有变量中,那么您可能不会以异步方式解决问题。您需要将动词带入名词,而不是将名词带入动词。您不会找到任何其他非异步的大型存储提供程序,因此重温异步并弄清楚如何使其为您工作需要付出很大的代价。可能不是一个简单的解决方案,但这是正确解决问题的唯一方法......
-
非常感谢您的 cmets。我可以看到在回调中包装了我的服务,但是当我需要使用多个数据值时,我立即开始担心。
-
您可以将整个调度/回调例程放在其他回调中。如果你正在做大量的事情,那么转换为承诺是值得的,但这需要更多的学习。简而言之,现在只需根据需要嵌套回调,直到它变得混乱,这很可能永远不会发生。
标签: javascript angularjs localforage