繁体   English   中英

AsyncStorage.getItem()返回一个值和一个Promise

[英]AsyncStorage.getItem() returns a single value AND a promise

我正在尝试通过AsyncStorage.setItem(KEY,VALUE);将单个值保存在设备中。

我有这个localStorage.js文件来管理本地数据

import React from 'react';
import { AsyncStorage } from 'react-native';

const storageSet = async(key, value) => {
    try {
      await AsyncStorage.setItem(key, value);
    } catch(error) {
      console.log(error);
    }
}

const storageGet = async(key) => {
  try {
       const result = await AsyncStorage.getItem(key);
       console.log(result);
       return result;
    } catch(error) {
      console.log(error);
    }
}

export { storageSet, storageGet };

login.js文件中,我调用这些传递参数的函数。 它保存权利。 但是,当我尝试获取getItem( )值时,我有两个不同的返回值 ,一个promise和一个 跟随:

console.log(result) storageGet('key'),这就是我想要的。

57d7bc714b269533
1
ASUS_Z00AD
1.0
null
1

console.log(result) 输出 storageGet('key')函数。 main.js中 ,当我调用它时。

{login: "Hh", senha: "Hu", imei: Promise, tipo: Promise, modelo: Promise, …}
imei:
Promise {_40: 0, _65: 1, _55: **"57d7bc714b269533"**, _72: null}
login: "Hh"
mobile_key:
Promise {_40: 0, _65: 1, _55: **null**, _72: null}
mobile_push:
Promise {_40: 0, _65: 1, _55: **"1"**, _72: null}
modelo:
Promise {_40: 0, _65: 1, _55: **"ASUS_Z00AD"**, _72: null}
senha: "Hu"
tipo:
Promise {_40: 0, _65: 1, _55: **"1"**, _72: null}
versao:
Promise {_40: 0, _65: 1, _55: **"1.0"**, _72: null}
__proto__: Object

PS .:某些项目没有从getItem()返回。

为什么不只返回单个值?

AsyncStorage仅将数据保存为字符串。 保存时只需要使用JSON.stringify(),而检索时则需要使用JSON.parse()。

AsyncStorage.getItem('key')
.then((value) => {
  const data = JSON.parse(value);
  console.log('name is ', data.name);
});

由于storageGet返回了一个承诺,因此您还需要在使用它的任何地方使用await:

const value = await storageGet(key);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM