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]]022022-12-11
相似问题