当前位置: 首页 > 面试题库 >

在Google Geocode中使用回调函数

刘博雅
2023-03-14
问题内容

我已经为此苦苦挣扎了几个小时,即使在阅读了Stack上的几个示例后,我也无法使它正常工作。我是JS新手,这无济于事。

我正在尝试从Google Geocoder
API检索有关地址的信息,然后将该对象传递给另一个函数。根据我的阅读,我了解到我用来检索信息的函数是异步的,因此我需要使用一个回调函数来读取它。但是,当我尝试执行此操作时,控制台仍然返回“
undefined”。我知道该信息来自Google,因为当我在结果对象上使用console.log()时,它会正确返回。

无论如何,这就是我正在使用的东西:

function onSuccess(position) {
  getLocationData(position, function(locationData) {
    console.log(locationData);
  });   
}

function getLocationData(position, callback) {
  geocoder = new google.maps.Geocoder();
  var location = 'Billings,MT';

  if( geocoder ) {
    geocoder.geocode({ 'address': location }, function (results, status) {
      if( status == google.maps.GeocoderStatus.OK ) {
        return results[0];
      }
    });
  }
  callback();
}

就像我提到的那样,我得到的只是“未定义”。如果我将’console.log(results
[0])’放在getLocationData()返回值上方,则返回的对象是正确的。任何帮助将非常感激。


问题答案:

您的问题是,您没有将回调连接到返回值。由于geocode()函数本身已经是异步的,因此return对它没有任何影响。相反,您必须将您在此处返回的值直接传递给回调函数。像这样:

function getLocationData(position, callback) {
  geocoder = new google.maps.Geocoder();
  var location = 'Billings,MT';

  if( geocoder ) {
    geocoder.geocode({ 'address': location }, function (results, status) {
      if( status == google.maps.GeocoderStatus.OK ) {
        callback(results[0]);
      }
    });
  }
}


 类似资料:
  • 问题内容: 我需要使用“接口”在Java中实现回调函数。我已经将应用程序部分写为 m_GetSizeInterface是一个包含回调函数GetSize的接口。此GetSize方法在应用程序中被覆盖。在JNI中,我需要调用具有原型的CPP函数 如何将此GetSize作为参数传递给JNI中的MyCPPFunction?请帮忙 问题答案: 这里的复杂之处在于您要调用本机C ++代码,而您又要调用Java

  • 问题内容: 我试图在jQuery中使用getJSON函数导入一些数据并触发回调函数。回调函数未运行。但是,如果我使用get函数尝试相同的操作,则效果很好。奇怪的是,即使我将“ json”作为类型传递,它也可以与get函数一起使用。为什么会这样呢?我在Firefox 3和IE 7中测试了以下文件: 只要我访问的URL在同一个域中,这似乎都会发生。我尝试传递一些数据,但这没有什么不同。 当然,可以像在

  • 问题内容: 我正在使用jQuery的网页上工作。我有一个Ajax调用,它从服务器获取数据并更新div。在该数据内部有一个jQuery函数,但是在将数据加载到页面中之后未调用该函数。我已经在页面中包含了正确的js文件。 这是从Ajax调用返回并放入div的内容: 将html插入页面后,如何使返回的javascript运行? (我将Rails与jRails插件结合使用) 问题答案: 如果要对具有htm

  • 问题内容: 在回调函数之外使用全局变量的最佳方法是什么? 问题答案: 您提供的代码是完全有效的,并且实际上 可以 “保持”其价值。问题可能是异步运行的-仅 在 从服务器完全加载后才调用匿名函数。因此,现实世界中的执行顺序如下所示: 调用 (开始加载data.xml) 通话(目前仍为null) (data.xml中完成载入) 现在 匿名函数被调用时,其分配值给图标:。 如果你想要做一些事情的价值,

  • 知识点 理解 Promise 概念,为什么需要 promise 学习 q 的 API,利用 q 来替代回调函数(https://github.com/kriskowal/q ) 课程内容 第五课(https://github.com/alsotang/node-lessons/tree/master/lesson5 )讲述了如何使用 async 来控制并发。async 的本质是一个流程控制。其实在

  • 我找到了一些很好的SO链接(如何从异步回调函数返回值?以及从node.js中的回调函数返回值等),但它们并不是不能为我的问题提供解决方案。 我的问题:能够得到异步调用的结果,但我如何使用这个结果返回我的函数? 这里获取callBackResponse的值为true或false,并希望将该值用作: