0

第一篇在这里!试图解决这个问题并在网上寻找答案但不是运气 - 我知道它在那里,但似乎无法弄清楚 - 我有一个 javascript 代码来返回用户的位置,如下所示:

var myLatlon = navigator.geolocation.getCurrentPosition(onSuccess, onError);

功能如下:

var onSuccess = function(position) {
    var latlon=position.coords.latitude+','+position.coords.longitude;
    return latlon;
};

当我做一个 console.log(latlon); 在上面的函数内部,它返回用逗号分隔的实际纬度和经度。

但是当我在第一行之后执行 console.log(myLatlon) 时;它返回:{"timer":true}

我需要从我的函数返回实际的纬度和经度。有任何想法吗?

4

2 回答 2

1

通常,您根本无法从用于处理异步执行的回调中返回。任何取决于您要返回的值的代码都必须在回调中调用。

这就是异步的工作原理。

于 2013-02-14T17:27:33.340 回答
1

您不能从 中返回值navigator.geolocation.getCurrentPosition。这就是异步调用的本质。在调用 navigator.geolocation.getCurrentPosition回调之前完成调用。onSuccess您必须在回调中使用您的坐标

通常,重构代码与返回代码的效果几乎相同。

navigator.geolocation.getCurrentPosition(function(position){
    // Use position from here
}, onError);
// This line is reached before the commented line in the anonymous function above, that's why you can't return the value
于 2013-02-14T17:28:20.413 回答