【发布时间】:2014-06-23 16:44:57
【问题描述】:
我想通过调用 get.Location 从函数 getDistanceFromLatLonInKm 的返回中访问(或打印)d。我想我可能会使用回调,但它不起作用(和/或我是一个 n00b)。这可能吗在这种情况下这样做?例如:document.write(getLocation(45.123,12.123)) //would print d somehow .
提前谢谢你。
getLocation(45.123,12.123);
function getLocation(a,b) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p){ajmo(p,a,b);});
}
}
function ajmo(position,a,b) {
lat = position.coords.latitude;
lng = position.coords.longitude;
getDistanceFromLatLonInKm(a,b,lat, lng);
}
function getDistanceFromLatLonInKm(lat_origin, lon_origin, lat_pos, lon_pos) {
var R = 6371;
var dLat = deg2rad(lat_pos - lat_origin);
var dLon = deg2rad(lon_pos - lon_origin);
var a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(deg2rad(lat_origin)) * Math.cos(deg2rad(lat_pos)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2)
;
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
return d;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}
【问题讨论】:
-
在CPS 中工作时,您不会从异步代码中返回值,您需要回调或承诺。
-
是的,
return在这里很重要,前两个函数中缺少它。 -
@elclanrs 知道如何实现它吗?(回调)。
-
Javascript: access return of the nested function 的可能重复项——请不要重复提问(或thrice)。
标签: javascript jquery function nested