抱歉,我是新手,对原生和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)
}
}
警告上面给我ReferenceError:找不到变量:方法。 console.log“here 2”无效。我可以成功获取数据而无需异步/等待mehtod,但目前,我有点需要async / await。请帮助我完成这些功能。
_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。现在我很好奇这是如何工作的?为什么async / await one不起作用?
答案 0 :(得分:2)
错误在这一行:
let response = await fetch(api.novel, method:"GET")
// ^
method
在引号之外,作为变量名,但它从未在任何地方声明过。
您可能打算将init
object传递给fetch
API:
let response = await fetch(api.novel, { method: "GET" })
// ^ passing an object, notice the { }
您也可以省略方法类型(默认为“GET”):
let response = await fetch(api.novel)