我目前无法访问函数中的值,但这是一个承诺。
这是我的代码:
service.getDistanceMatrix({
origins: ["Waterloo ON"],
destinations: destination,
travelMode: 'DRIVING',
avoidHighways: false,
avoidTolls: false
}, function(response, status){
if (status == 'OK') {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
var element = results[j];
var distance = element.distance.text;
var duration = element.duration.text;
var from = origins[i];
var to = destinations[j];
// _this.
// console.log(distance);
location.distFinal = distance;
location.setState({
dist: distance
})
// return distance;
// return distance;
// console.dir(distance)
// tryA = distance;
}
}
}
})
console.dir(location);
console.dir(location.distFinal);
我正在尝试访问距离所以我做了console.dir(location.distFinal),但它给了我一个未定义的值。但是,当我执行console.dir(location)时,它给了我带有distFinal的对象作为值....
这就是我的意思:
第126行是console.dir(位置),第127行是console.dir(location.distFinal)
请!我只是希望能够提取距离!
答案 0 :(得分:1)
目前还没有承诺,所以尝试将转换为承诺 - 这样一旦异步代码拥有您想要的数据,您就可以解决这个问题。然后,您可以.then
承诺在解决后运行代码。
// location is defined somewhere up here
new Promise((resolve, reject) => {
service.getDistanceMatrix({
origins: ["Waterloo ON"],
destinations: destination,
travelMode: 'DRIVING',
avoidHighways: false,
avoidTolls: false
}, function(response, status){
if (status == 'OK') {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
var element = results[j];
var distance = element.distance.text;
var duration = element.duration.text;
var from = origins[i];
var to = destinations[j];
// _this.
// console.log(distance);
location.distFinal = distance;
location.setState({
dist: distance
})
// return distance;
// return distance;
// console.dir(distance)
// tryA = distance;
}
}
// looping is done
resolve();
}
})
}).then(() => {
console.dir(location);
console.dir(location.distFinal);
});
&#13;
console.dir
的原因是因为Chrome的控制台在您打开控制台时请求对象的状态,而不是显示对象的状态因为它是。