我在我的Component的构造函数中添加了AsyncStorage的setItem函数,然后我创建了一个函数来使用getItem函数获取它的值,但它返回空。我错过了什么吗?
这是我的代码:
constructor(props) {
super(props);
try {
AsyncStorage.setItem('testKey', 'I like to save it.');
} catch (error) {
alert("error", error);
// Error saving data
}
}
getData(){
AsyncStorage.getItem('testKey').then((data) => {
alert("data", data);
})
}
基本上,我想将一个accessToken存储到AsyncStorage,一旦设置好,我想调用getItem函数来使用它。
此外,setItem的then()函数不起作用:
AsyncStorage.setItem('testKey','blah blah').then(() => {
console.log("I never get executed."); // -> this code never executes for some reason
});
我一直试图解决它,但无济于事。
答案 0 :(得分:1)
请记住,两个(setItem和getItem)都是异步执行的,async
/ await
应解决您的问题,如documentation中所述:
constructor(props) {
super(props);
this.setData();
}
async setData() {
try {
await AsyncStorage.setItem('testKey', 'I like to save it.');
} catch (error) {
// Error setting data
}
}
async getData(){
try {
const value = await AsyncStorage.getItem('testKey');
if (value) {
// We have data!!
console.log(value);
}
} catch (error) {
// Error retrieving data
}
}