AsyncStorage.getItem() returns 单一价值和承诺
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() 值时,我有 两个不同的 returns,一个 promise 和 单个值 。关注:
console.log(result) whithin storageGet('key'),这就是我想要的。
57d7bc714b269533
1
ASUS_Z00AD
1.0
null
1
console.log(result) out 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() 的 return。
为什么它不只是 return 单个值?
因为 storageGet
returns 一个承诺,你还需要在任何地方使用 await :
const value = await storageGet(key);
AsyncStorage 仅将数据保存为字符串。您只需要在保存时使用 JSON.stringify() 并在检索时使用 JSON.parse()。
AsyncStorage.getItem('key')
.then((value) => {
const data = JSON.parse(value);
console.log('name is ', data.name);
});
我正在尝试通过 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() 值时,我有 两个不同的 returns,一个 promise 和 单个值 。关注:
console.log(result) whithin storageGet('key'),这就是我想要的。
57d7bc714b269533
1
ASUS_Z00AD
1.0
null
1
console.log(result) out 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() 的 return。
为什么它不只是 return 单个值?
因为 storageGet
returns 一个承诺,你还需要在任何地方使用 await :
const value = await storageGet(key);
AsyncStorage 仅将数据保存为字符串。您只需要在保存时使用 JSON.stringify() 并在检索时使用 JSON.parse()。
AsyncStorage.getItem('key')
.then((value) => {
const data = JSON.parse(value);
console.log('name is ', data.name);
});