抱歉,我是本机和 es6 的新手,现在我的 API 获取函数遇到了问题。
componentDidMount() {
console.log("here");
this._onPressButtonGET(0)
}
renderList = (data) =>{
if(data){
return data.map((item) => {
return(
{
rOrder: item.rOrder,
title: item.title,
intro: item.intro,
url: item.url,
img: item.img,
}
)
}
)
}
}
async _onPressButtonGET(data) {
console.log("here1");
try {
let response = await fetch(api.novel, method:"GET")
let json = await response.json()
console.log("here2");
let dataList = this.renderList(responseData.data.carousel);
for ( data = 0 ; data < 5; data++){
if (dataList[data] == null) break;
console.log(dataList[i]);
};
this.setState({ pValue:data })
} catch (error) {
console.log("here3");
this.setState({ refreshing: false })
alert(error)
}
}
上面的警报给我参考错误:找不到变量:方法。控制台.log"此处 2"不起作用。我可以在没有异步/等待 mehtod 的情况下成功获取数据,但目前,我有点需要异步/等待。请帮助我完成这些功能。
_onPressButtonGET(data) {
fetch(api.novel, {method: "GET"})
.then((response) => response.json())
.then((responseData) => {
let dataList = this.renderList(responseData.data.carousel);
//console.log(dataList);
//console.log(dataList[1]);
//let i = 0;
for ( data = 0 ; data < 5; data++){
if (dataList[data] == null) break;
//console.log(dataList[i]);
};
console.log("outloop" +data);
this.setState({ pValue:data })
})
.done();
}
我使用另一个函数来使此获取成功,但不是使用 async/await。现在我很好奇这是如何工作的?为什么异步/等待不起作用?
错误位于此行:
let response = await fetch(api.novel, method:"GET")
// ^
method
在引号之外,作为变量名,但它从未在任何地方声明过。
您可能打算将init
对象传递给fetch
API:
let response = await fetch(api.novel, { method: "GET" })
// ^ passing an object, notice the { }
您也可以省略方法类型(默认为"GET"(:
let response = await fetch(api.novel)