我如何在localStorage中分配localForage中的变量?

时间:2015-02-07 23:40:20

标签: javascript angularjs localforage

请帮我解决以下问题。

我一直在将我的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。

我确信这与promises有关,因为当我使用回调时,我可以访问正确的' myValue'但是我想把它从呼叫中取出来用于其余的服务。

另外需要注意的是,我正在服务中,因此无法分配到范围(除非我不知道如何)。

感谢任何帮助。

由于 乙

2 个答案:

答案 0 :(得分:0)

$localForage.setItem('localSavedValue','SavedValue').then(function() {
        $localForage.getItem('localSavedValue').then(function(data) {
            console.log(data); 
        });
    });

https://github.com/ocombe/angular-localForage#configure-the-provider-

答案 1 :(得分:0)

LocalForage在设计上是异步的,所以我建议你使用像@RouR建议的Promises。

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

$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,对此类迁移采用更友好的方法是将其配置为使用transform-async-to-generatorpreset-es2017并重写此类代码

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