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。これが非同期呼び出しの性質です。toの呼び出し 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 に答える