我正在尝试从回调函数返回一个值并将其分配给变量,尽管我正在努力解决它 - 任何帮助都会非常感激....
var latlng1;
function getLocation(){
navigator.geolocation.getCurrentPosition (function (position){
coords = position.coords.latitude + "," + position.coords.longitude;
callback();
})
}
//how can I assign the coords value from the callback to variable latlng1 with global scope?
getLocation (function(){
//alert(coords);
return coords;
})
// -----------
//I'm trying something like this....but no joy
latlng1 = getLocation (function(){
return coords;
}
答案 0 :(得分:4)
我很困惑,您是否希望回调能够访问coords
值,或者只是从getLocation
函数返回它。如果只有coords
可用于回调,则将其作为参数传递。
function getLocation(callback) {
navigator.geolocation.getCurrentPosition (function (position){
var coords = position.coords.latitude + "," + position.coords.longitude;
callback(coords);
})
}
getLocation (function(coords){
alert(coords);
})
另一方面,如果将它分配给getLocation
的返回,那么这是不可能的。 getCurrentPosition
API是异步的,因此您无法从getLocation
方法同步返回它。相反,您需要传递要使用coords
的回调。
修改强>
OP表示他们只想要coords
中的latlng1
值。以下是您如何实现这一目标
var latlng1;
function getLocation() {
navigator.geolocation.getCurrentPosition (function (position){
var coords = position.coords.latitude + "," + position.coords.longitude;
latlng1 = coords;
})
}
请注意,这并不会改变API的异步性质。在异步调用完成之前,变量latlng1
将不具有coords
值。由于此版本不使用回调,因此您无法知道何时完成(除了检查latlng1
的{{1}}
答案 1 :(得分:0)
怎么样:
var latlng1;
function getLocation(){
navigator.geolocation.getCurrentPosition (function (position){
latlng1 = position.coords.latitude + "," + position.coords.longitude;
callback();
})
}
getLocation (function(){
alert(latlng1);
})
答案 2 :(得分:-1)
您可以将coords传递给回调调用,并在回调中为其定义参数。它比阅读更容易解释:
var latlng1;
function getLocation(callback){
navigator.geolocation.getCurrentPosition (function (position){
coords = position.coords.latitude + "," + position.coords.longitude;
callback(coords);
})
}
//how can I assign the coords value from the callback to variable latlng1 with global scope?
getLocation (function(coords){
//alert(coords);
return coords;
})