我的代码正常工作,但是每当调用此函数时,我都会在我的移动设备上收到与此问题标题同名的错误。
_matchAddresses(id) {
fetch('https://myapp.com/rest/jobs/address/' + id)
.then((response) => response.json())
.then((responseJson) => {
var addresses = [];
console.log('addresses: ' + responseJson);
for (var i=0; i<responseJson.length; i++) {
addresses.push(responseJson[i]);
for (var j=0; j<addresses.length; j++) {
fetch('https://maps.googleapis.com/maps/api/geocode/json?address='+ addresses[j].split(" ") + '&key=googleapikey')
.then((response) => response.json())
.then((responseJson) => {
let lat = responseJson.results["0"].geometry.location.lat; //error here
let lng = responseJson.results["0"].geometry.location.lng; //error here
console.log("coordinates: " + lat + " " + lng); //returns coordinates every time
if (this._latMatch(userLat, lat) && this._lngMatch(userLng, lng)) {
this._myFunction();
console.log("fire");
}
})
.catch((error) => {
console.error(error);
});
}
}
});
}
我知道 lat 和 lng 已经通过一些日志记录进行了定义,所以我不明白为什么我仍然会收到错误。提前谢谢你。
您的results["0"]
返回为空,这就是您收到该错误的原因。由于您正在迭代 for 循环并且您成功打印出坐标,我的猜测是,这些获取到 Google API 的获取中至少有一次没有返回预期的结果。要对此进行测试,您可以在尝试访问结果对象之前记录它,并检查错误之前返回的对象。