我正在构建一个Android应用程序,我正在努力使用AsyncStorage。我想创建一个函数,它将一个键作为输入并返回给我项目。我的问题是,当我调用此函数时,它返回{_40:0,_65:0,_55:null,_72:null}而不是我要查找的值。
这是我的代码:
renderList() {
async function save() {
await AsyncStorage.setItem('Title', 'hello');
}
async function fetch(key) {
const value = await AsyncStorage.getItem(key);
console.log(value) ; // Return hello
return value
}
save() ;
fetch() ;
const reponse = fetch() ;
console.log(reponse) ; // Return { _40: 0, _65: 0, _55: null, _72: null }
return (
<Text style={styles.noteElementTitle}> Aa </Text>
)
}
修改:
我试过了:
async function getBody() {
await save();
const response = await fetch('Title');
console.log(response);
this.setstate({ title : response}) ;
}
getBody() ;
但我仍然收到错误:TypeError:undefined不是函数(评估&#39; this.setstate({title:response})&#39;)
答案 0 :(得分:6)
您所看到的是标记为Promise
的函数返回的async
对象。您需要在调用函数时使用await
,或将值视为承诺并使用then
和catch
。例如:
await save();
const response = await fetch();
console.log(response);
或
save()
.then(() => fetch())
.then(response => console.log(response));
另外,请记住,您不应该在渲染函数中使用异步函数。在上面的代码中,您希望将fetch()
函数的结果放入组件状态。