javascript - api调用返回undefined后的Meteor方法

标签 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. https://stackoverflow.com/a/20090566/6880789

但是,我建议您使用 Meteor.wrapAsync如下所示:

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

关于javascript - api调用返回undefined后的Meteor方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48836004/

相关文章:

javascript - Google map 引擎 - 在 InfoWindow 上显示路线

javascript - 如何在knockout js中自动点击按钮

javascript - 如何在 Meteor 中对光标处的项目进行分组?

java - Android map View 地理编码器语法

javascript - 如何从 child 那里获取值(value)观数据

javascript - 如何在 html/javascript 中包含项目文件夹之外的文件

meteor - 铁路由器和 meteor : Template rendering on different url

javascript - Meteor JS Iron Router 良率故障排除

google-maps - 谷歌地图 API : Geocode returns different co-ordinates then Google maps

javascript - 连接到数据库时不显示 Google map