Сохранение данных, если их нет для определенного ключа, использующего 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. Кто-нибудь знает, как правильно структурировать эти звонки?
1 ответ
Вы должны объявить axios
обработчик успеха с помощью async
ключевое слово. В своем коде вы написали как .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);
}
}
Надеюсь это поможет!