api调用返回undefined

时间:2018-02-16 22:54:23

标签: javascript meteor geocoding

我正在使用Meteor,每当我对googles geocode进行api调用并尝试从中返回值时我得到一个未定义的,我使用回调到api所以肯定有数据所以我不确定导致它的原因

callWeather = e => {
  e.preventDefault();
  console.log(this.state.address);
  Meteor.call("geCoordinates", this.state.address, function(err, result) {
    if (err) {
      console.log(err);
    } else {
      console.log(result);
    }
  });
};

geCoordinates(address) {
  googleMapsClient.geocode({ address }, (error, data) => {
    if (error) {
      console.log(error);
    } else {
      console.log(data.json.results[0].geometry.location.lat);
      return data.json.results[0].geometry.location.lat;
    }
  });
},

1 个答案:

答案 0 :(得分:2)

这是大多数人在开始时所犯的常见错误。这里的问题是在方法代码执行回调函数之前,客户端中存在数据响应。有很多解决方案:

  1. https://stackoverflow.com/a/20090566/6880789
  2. 但是,我建议您使用Meteor.wrapAsync,如下所示:

    let getGeoCode = Meteor.wrapAsync(googleMapsClient.geocode, googleMapsClient.geocode),
    data = getGeoCode({ address });  // data contains data of your callback