我有两个按钮,第一个用于设置AsyncStorage
的项目,第二个用于获取AsyncStorage
的项目。
<Button title = 'click' onPress = {() => {
let item = '1234'
AsyncStorage.setItem('data', item )
alert('saved')
}
}
/>
<Button title = 'click2' onPress = { async() => {
let item = await AsyncStorage.getItem('data')
alert(item)
console.log(item)
}
}
/>
由于某种原因,在单击第一个按钮以保存数据之后,我尝试单击第二个按钮,但是alert
函数和console.log
无法正常工作。
有人可以帮我解决吗?谢谢。
答案 0 :(得分:0)
setItem
也是异步的,您不必等待它解决。数据可能没有及时保存(尽管如果您确实在使用面向人的按钮,这似乎不太可能)。
这两个呼叫中的一个或两个都有可能失败,但您没有处理它们的错误-两者均应使用await
进行调用,并包装在try
/ catch
中,当然在实际应用。同样,尽管我对此表示怀疑,因为在开发人员中,您通常会看到警告,提示未处理的诺言被拒绝。
答案 1 :(得分:0)
_saveData(data) {
AsyncStorage.setItem("data", data);
};
_getData = async () => {
try {
let data = await AsyncStorage.getItem('data');
console.log(data)
} catch (e) {
//console.log("error", e)
}
};
<Button title = 'set data' onPress = {() => this._saveData("1234")} />
<Button title = 'get data' onPress = {() => this._getData ()} />