从嵌套函数返回值 - JavaScript
Returning values from nested functions - JavaScript
我在返回以下函数的 latLng 值时遇到了一些问题。
function getUserPosition() {
var latLng;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function (position) {
latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); // #1
}, function () {
latLng = defaultPosition(); // #2
}
);
} else {
latLng = defaultPosition(); // #3
}
return latLng;
}
假设 defaultPosition() returns 一组有效的坐标。
我已经标记了三个 latLng 作业,它们是我最新 'catch-all' 方法的一部分,但仍然没有成功。
我已经检查了其他相关的答案,但似乎仍然无法解决我的特定问题,很抱歉重新发布。
提前致谢。
由于位置 API 的异步性质,您不能这样做,而是需要使用基于回调的方法,一旦位置 API returns 值。
function getUserPosition(callback) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function (position) {
callback(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
}, function () {
callback(defaultPosition()); // #2
});
} else {
callback(defaultPosition()); // #3
}
}
getUserPosition(function(latLng){
//do all operations that depends on latLng here in the callback function
})
我在返回以下函数的 latLng 值时遇到了一些问题。
function getUserPosition() {
var latLng;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function (position) {
latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); // #1
}, function () {
latLng = defaultPosition(); // #2
}
);
} else {
latLng = defaultPosition(); // #3
}
return latLng;
}
假设 defaultPosition() returns 一组有效的坐标。
我已经标记了三个 latLng 作业,它们是我最新 'catch-all' 方法的一部分,但仍然没有成功。
我已经检查了其他相关的答案,但似乎仍然无法解决我的特定问题,很抱歉重新发布。
提前致谢。
由于位置 API 的异步性质,您不能这样做,而是需要使用基于回调的方法,一旦位置 API returns 值。
function getUserPosition(callback) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function (position) {
callback(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
}, function () {
callback(defaultPosition()); // #2
});
} else {
callback(defaultPosition()); // #3
}
}
getUserPosition(function(latLng){
//do all operations that depends on latLng here in the callback function
})