首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用idbKeyval获取我的IndexedDB val的密钥?

如何使用idbKeyval获取我的IndexedDB val的密钥?
EN

Stack Overflow用户
提问于 2019-03-12 08:21:40
回答 1查看 0关注 0票数 0

我正在使用idbKeyval库来保存/检索IndexedDB本地存储中的数据。我有一个函数迭代我的所有键并获得每个相应的对象。但是,当我检索每个对象(val)时,我需要知道它的相应键(这就是我如何将对象与DOM中的元素相关联)。但由于IndexedDB(和idbKeyval)api是异步的,我丢失了对相应密钥的引用。key当我检索我的时候有没有办法检索相应的val?以下是一个更好地描述我要做的事情的片段:

代码语言:javascript
复制
var customStore = new idbKeyval.Store('my-db', 'offline-transactions');
idbKeyval.keys(customStore)
    .then(function (keys) {
        for (var i in keys) {
            var key = keys[i];
            var val = idbKeyval.get(key, customStore)
                .then(function (val) {

                    //THIS WORKS:
                    console.log(val);

                    //THIS DOES NOT WORK:
                    console.log(key);
                    //'KEY' IS OUT OF SCOPE HERE
                    //WHAT IS A GOOD WAY TO GET THE CORRESPONDING KEY FOR MY VAL HERE?

                });
        }
    });

我正在使用idbKeyval库:https//github.com/jakearchibald/idb-keyval

EN

回答 1

Stack Overflow用户

发布于 2019-03-12 17:58:51

这有两个三个解决方案。您可以创建一个IIFE(旧方法)并设置一个局部变量来“复制”循环中的变量:

代码语言:javascript
复制
.then(function(val) {
    (() => {
        var localKey = key;
        // ...
        // localKey will be preserved since it's encapsulated
        // in its own functional scope
    })();
}

或者您可以使用更好的Array.forEachES6方法:

代码语言:javascript
复制
keys.forEach((key) => {
    var val = // ...
    // No need to copy key here since we're in a new functional
    // scope by the nature of .forEach
});

这两种方法基本相同 - 您通过为循环的每次迭代创建一个新的功能范围来保留变量。

希望有助于澄清一些事情。

编辑

我错过了最简单的*解决方案:使用letconst在你的for循环而不是var。这是因为let并且const具有块范围而不是函数范围。本文有助于解释这一点。所以:

代码语言:javascript
复制
for (var i in keys) {
    const key = keys[i];
    // ...
    // key will be preserved in block
}

就个人而言,我更喜欢Array.forEach它,因为它看起来更简单,并且可以保护您不必担心您所处的范围。

* 最简单:我刚才不知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006436

复制
相关文章

相似问题

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