Javascript 如何检查React Native中的异步存储中是否存在密钥?getItem()始终返回承诺对象
我正在尝试使用Javascript 如何检查React Native中的异步存储中是否存在密钥?getItem()始终返回承诺对象,javascript,react-native,react-native-android,asyncstorage,Javascript,React Native,React Native Android,Asyncstorage,我正在尝试使用AsyncStorage.getItem('key\u name')检查AsyncStorage中是否有密钥可用。如果密钥不可用,则不会返回null,它仍会返回以下承诺对象: Promise _45:0 _54:null _65:null _81:1 我获取数据的功能如下: checkItemExists(){ let context = this; try { let value = AsyncStorage.getItem('item_key'
AsyncStorage.getItem('key\u name')
检查AsyncStorage
中是否有密钥可用。如果密钥不可用,则不会返回null,它仍会返回以下承诺对象:
Promise
_45:0
_54:null
_65:null
_81:1
我获取数据的功能如下:
checkItemExists(){
let context = this;
try {
let value = AsyncStorage.getItem('item_key');
if (value != null){
// do something
}
else {
// do something else
}
} catch (error) {
// Error retrieving data
}
}
如何检查AsyncStorage中是否存在密钥?AsyncStorage是异步的。。。所以,你需要这样称呼它:
checkUserSignedIn(callback){
AsyncStorage.getItem('user', (err, result) => {
if (!err && result != null){
// do something
}
else {
// do something else
}
callback(result);
});
}
正如名字所说,它是异步的。因此,你必须:
AsyncStorage.getItem('user')
.then((item) => {
if (item) {
// do the damage
}
});
如果需要,您可以使用本地状态或某些应用程序状态管理库。您需要添加async await,或添加。然后添加到结果中
async checkUserSignedIn(){
let context = this;
try {
let value = await AsyncStorage.getItem('user');
if (value != null){
// do something
}
else {
// do something else
}
} catch (error) {
// Error retrieving data
}
}
由于函数调用中也需要有
wait
,因此会得到一个作为错误的承诺。例如,请在以后的另一次调用中查找我的普通类以及如何调用它
import AsyncStorage from "@react-native-community/async-storage";
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 };
当我打电话给他们时,记下wait
关键字
let value = await storageGet("somekey")
if (value === null || value === undefined ) {
//no value set in storage
}
回答得很好,这与问题无关,但是当变量的值不会被重新赋值时,应该使用
const
而不是let
let
最好在变量可以重新分配但不修改时使用,const
在变量既不重新分配也不修改时使用。@YungGun如果对我来说,我的目的只是展示如何从asyncstorage和我刚从OP代码复制的其他内容中获取值。无论如何,这一点很好。@SagarKhatri在使用代码“wait是一个保留字”>61 | let value1=wait AsyncStorage.getItem('DriverId');|^时遇到了这样的错误62 | let value2=等待AsyncStorage.getItem('AccessToken');63 | console.log(value1+“”+value2)64 | this.props.navigation.navigate('Login')@SrinivasanLakshmanan在函数之前,您需要将其与async一起使用。。你能分享你的代码吗?