【发布时间】:2023-03-04 08:19:07
【问题描述】:
我正在尝试使用 async await 进行 API 调用,但它不起作用并且没有给出错误 在这里我试图调用 getRace() 来返回一个承诺,所以我在这里使用 await 关键字:
async function RaceInfo(){
await getRace(raceID)
}
然后我调用 RaceInfo() 并使用 then 来处理响应:
RaceInfo().then(res=>{
if(race.status === "in-progress") {
renderAt('#leaderBoard', raceProgress(res.positions))
}else if(race.status === "finished"){
clearInterval(raceInterval) // to stop the interval from repeating
renderAt('#race', resultsView(res.positions)) // to render the results view
}
然后所有这些都需要分组到一个最终的承诺中,以便在外部调用:
function runRace(raceID) {
return new Promise(resolve => {
// TODO - use Javascript's built in setInterval method to get race info every 500ms
async function RaceInfo(){
await getRace(raceID)
}
RaceInfo().then(res=>{
if(race.status === "in-progress") {
renderAt('#leaderBoard', raceProgress(res.positions))
}else if(race.status === "finished"){
clearInterval(raceInterval) // to stop the interval from repeating
renderAt('#race', resultsView(res.positions)) // to render the results view
resolve(res)
}
}).catch((err) => {
console.log(err);
})
const raceInterval=setInterval(RaceInfo, 500);
})
}
控制台没有返回错误,可能是什么问题?
【问题讨论】:
-
您尚未从
RaceInfo返回值。试试return await getRace(raceID)