2012-02-27 78 views
1

我正在寻找一种解决方法,让谷歌搜索方法返回回调的结果,而不是未定义的。谷歌地方api回调解决方法

$.find_places_nearby = function(latitude, longitude, successCallback) { 
    var latlng, service; 
    latlng = new google.maps.LatLng(latitude, longitude); 
    service = new google.maps.places.PlacesService(document.getElementById('map')); 
    return service.search({ 
    location: latlng, 
    radius: '50', 
    }, function(results, status) { 
    return successCallback(results, status); 
    }); 
}; 

例如...我想

$.find_places_nearby(2.4, -100.5, function(results, status) { 
    return "callback results"; 
}); 

返回callback results而不是undefined

回答

0

那是不可能的。该回调函数在稍后的某个未定义的时间点明确执行,异步。对$.find_places_nearby()的调用将显式不返回任何内容,而是传递应该以该调用的结果作为回调执行的代码。从回调中返回某些内容是没有意义的。

+0

确实。当你深入兔子洞时,很难看到它。感谢你的新鲜眼睛。 – brewster 2012-02-27 08:39:24

0

您可以尝试使用promise对象。 诺言模式可以让你做异步的东西,但仍然保持更线性的流量。