AsyncStorage.multiGet这个方法

来源:9-1 基于多数据存储设计思想实现FavoriteDao,封装BaseItem【思考与实践】

懵逼猫

2022-12-10

getAllItems() {
        return new Promise((resolve, reject) => {
            this.getFavoriteKeys().then((keys) => {
                console.log(keys, 'keys')
                let items = []
                if (keys) {
                    AsyncStorage.multiGet(keys, (err, stores) => {
                        console.log(stores, 'stores')
                        try {
                            stores.map((result, i, store) => {
                                let key = store[i][0]
                                let value = store[i][1]
                                if (value) {
                                    items.push(JSON.parse(value))
                                }
                            })
                            resolve(items)
                        } catch (error) {
                            reject(e)
                        }
                    })
                } else {
                    resolve(items)
                }
            }).catch((e) => {
                reject(e)
            })
        })
    }
    ```
    这里面的stores是怎么获取到二维数组的items的呢?我只看到AsyncStorage通过setItem方法把key值保存了下来可以通过getItem去取,但是存的是Key值,也没有存下整个item呀?难道是AsyncStorage.multiGet(keys,(err, stores)=>{})里面的stores 是他自己去我们redux中的store里面去取的吗?
写回答

1回答

CrazyCodeBoy

2022-12-10

这是由multiGet返回的数据结构所决定的,它会将存储在磁盘上的k-v转成下面的数据结构来返回:
[[key1,value1],[key2,value2]]
0
2
CrazyCodeBoy
是的,可以这么理解。
2022-12-11
共2条回复

RN入门到进阶,打造高质量上线App

解锁React Native开发应用新姿势,React Native新版本热门技术

3144 学习 · 3241 问题

查看课程