将参数添加到回调中

时间:2014-07-09 06:34:01

标签: javascript google-maps google-maps-api-3 callback

我目前使用谷歌地图API,我遇到了一个问题,我无法解决如何解决问题。 我对Javascript的体验非常有限,所以答案可能很简单。

我的代码目前非常接近 radar search google example

我遇到问题的部分代码是:

function performSearch() {
  var request = {
    bounds: map.getBounds(),
    keyword: 'best view'
  };
  service.radarSearch(request, callback);
}

function callback(results, status) {
  if (status != google.maps.places.PlacesServiceStatus.OK) {
    alert(status);
    return;
  }
  for (var i = 0, result; result = results[i]; i++) {
    createMarker(result);
  }
}

我稍微修改了代码,以便 performSearch 有一个输入参数。 我想回调也知道这个参数。

所以我想要实现的是:

function performSearch(aParameter) {
  var request = {
    bounds: map.getBounds(),
    keyword: 'best view'
  };
  service.radarSearch(request, callback(aParameter));
}

function callback(results, status, aParameter) {
  console.log("callback knows about : " + aParameter);
  if (status != google.maps.places.PlacesServiceStatus.OK) {
    alert(status);
    return;
  }
  for (var i = 0, result; result = results[i]; i++) {
    createMarker(result);
  }
}

我尝试了很多方法将 aParameter 插入回调中,但到目前为止我的所有尝试都失败了。

那么在不使用全局变量的情况下为回调提供额外参数的方法是什么?

更多信息:

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好的,问题确实是我的Javascript缺乏经验:)。

我发现this related question解决了这个问题。

这个想法是做这样的事情:

function performSearch(aParameter) {
  var request = {
    bounds: map.getBounds(),
    keyword: 'best view'
  };
  service.radarSearch(request, function(results, status){
     resultCallback(results, status, aParameter);
  });
}