C'est impossible que vous ne pouvez pas utiliser un appel asynchrone à l'intérieur d'une méthode synchrone.
Dans ce cas, vous devez passer un rappel à toto qui va recevoir la valeur de retour
function foo(address, fn){
geocoder.geocode( { 'address': address}, function(results, status) {
fn(results[0].geometry.location);
});
}
foo("address", function(location){
alert(location); // this is where you get the return value
});
La chose est, si l'intérieure d'un appel de fonction est asynchrone, puis toutes les fonctions 'habillage' l'appel doit être asynchrone afin de "retour", une réponse.
Si vous avez beaucoup de rappels, vous pourriez envisager de prendre le plongeon et l'utilisation d'une promesse de la bibliothèque comme Q.