我正在尝试从获取请求中创建响应数组,但不确定在循环中出现问题的地方。 console.log(response)
给出TypeError:undefined不是一个对象,当我尝试console.log(resp)
时,我得到一个console.error
const routesArray = async (userLocation, arr) => {
let result = [];
let temp = [];
temp.push(userLocation);
const updated = temp.concat(arr);
let origin = updated[0].lat + "," + updated[0].long;
let destination = updated[updated.length - 1];
for (let i = 0; i < updated.length; i++) {
let resp = await fetch(
"https://maps.googleapis.com/maps/api/directions/json?origin=" +
origin +
"&destination=" +
destination +
"&key=" +
GOOGLE_MAPS_API_KEY +
"&mode=transit®ion=sg"
);
let response = await resp[0]["routes"][0]["legs"][0]["steps"]
console.log(response);
result.push(response);
}
return result
};
答案 0 :(得分:3)
替换:
await resp[0]["routes"][0]["legs"][0]["steps"]
使用
(await resp.json())[0]["routes"][0]["legs"][0]["steps"]
或者为什么不呢?
(await resp.json())[0].routes[0].legs[0].steps
这是必需的,因为resp
是一个响应对象,它尚未公开数据。为此,您必须调用其异步方法之一,例如json()
,该方法将返回它们自己的承诺。
顺便说一句:您得到的错误不在console.log(response)
上,而是在上一行。
如果仍然出现错误,请确保按预期结构化数据:
console.log(JSON.stringify(await resp.json()));
这将向您显示数据。确保它是一个数组。如果不是这样,则将需要对代码进行相应的修改,因为[0]
部分将失败。