如果使用 AsyncStorage 的某个键存在 none,则持久化数据
Persisting data if none exists for a certain key using AsyncStorage
我正在尝试设置一个函数,首先检查我是否有某个键的值,如果没有,我使用 axios 库从网络获取值并保存而是作为该键的值。这是我的代码:
async getName() {
try {
const value = await AsyncStorage.getItem('dummy'); //the value should be a JSON object
if (value !== null){
return value.name;
}
else {
axios.get('https://api.github.com/users/dummy')
.then(function (response) {
console.log(response);
try {
await AsyncStorage.setItem('dummy', 'dummyval');
} catch (error) {
console.log(error);
}
return(response.name);
})
.catch(function (error) {
console.log('Error fetching name: ' + error.response);
});
}
} catch (error) {
console.log(error);
}
我是 React Native 的新手,所以我确定这看起来一团糟。我知道我一定做错了什么,因为我在第二次使用 await 时不断收到语法错误。有谁知道如何正确构造这些调用?
您需要使用 async
关键字声明 axios
的成功处理程序。在你的代码中,你写成.then(function (response)
,这个应该改成.then(async function (response)
.
考虑以下更改。
async getName() {
try {
const value = await AsyncStorage.getItem('dummy'); //the value should be a JSON object
if (value !== null){
return value.name;
}
else {
axios.get('https://api.github.com/users/dummy')
.then(async function (response) {
console.log(response);
try {
await AsyncStorage.setItem('dummy', 'dummyval');
} catch (error) {
console.log(error);
}
return(response.name);
})
.catch(function (error) {
console.log('Error fetching name: ' + error.response);
});
}
} catch (error) {
console.log(error);
}
}
希望对您有所帮助!
我正在尝试设置一个函数,首先检查我是否有某个键的值,如果没有,我使用 axios 库从网络获取值并保存而是作为该键的值。这是我的代码:
async getName() {
try {
const value = await AsyncStorage.getItem('dummy'); //the value should be a JSON object
if (value !== null){
return value.name;
}
else {
axios.get('https://api.github.com/users/dummy')
.then(function (response) {
console.log(response);
try {
await AsyncStorage.setItem('dummy', 'dummyval');
} catch (error) {
console.log(error);
}
return(response.name);
})
.catch(function (error) {
console.log('Error fetching name: ' + error.response);
});
}
} catch (error) {
console.log(error);
}
我是 React Native 的新手,所以我确定这看起来一团糟。我知道我一定做错了什么,因为我在第二次使用 await 时不断收到语法错误。有谁知道如何正确构造这些调用?
您需要使用 async
关键字声明 axios
的成功处理程序。在你的代码中,你写成.then(function (response)
,这个应该改成.then(async function (response)
.
考虑以下更改。
async getName() {
try {
const value = await AsyncStorage.getItem('dummy'); //the value should be a JSON object
if (value !== null){
return value.name;
}
else {
axios.get('https://api.github.com/users/dummy')
.then(async function (response) {
console.log(response);
try {
await AsyncStorage.setItem('dummy', 'dummyval');
} catch (error) {
console.log(error);
}
return(response.name);
})
.catch(function (error) {
console.log('Error fetching name: ' + error.response);
});
}
} catch (error) {
console.log(error);
}
}
希望对您有所帮助!