私の質問はJavascriptについてです。 私は、成功したコールバックでPositionオブジェクトを受け取るコールバック関数を持っています。Javascriptコールバック関数の戻り値をグローバル変数に割り当てる
問題は、私は成功したコールバックでグローバル変数に位置オブジェクトのプロパティを設定しようとすると、それはちょうど私がそれを行うことはできません。また、グローバルだけで未定義のままであることです。
オブジェクトプロパティをグローバル変数に直接設定するのではなく、コールバック関数で返すようにしていますが、コールバック関数の戻り値をグローバルに設定する方法が見つかりませんでした変数。
ここでは単純化されたコードです。
var x;
navigator.geolocation.getCurrentPosition(onSuccess, onError);
//on Successful callback receives a Position Object
function onSuccess(position) {
var coords = position.coords;
x=coords; // Setting directly to an object does not work x still remains undefined after succesful callback
return coord; // Trying to set this to a global object
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
実際に良い点を、私の答えは私の一部に愚かな監督です。コードは線形ではないので、値がバインドされていることを確認するために、コールバックのコードで何をしたいのですか? – WickyNilliams
実際には正しいです。getCurrentPosition関数は非同期のジオロケーションを取得しようとしていますそのため、グローバル変数からアクセスしようとすると、おそらく設定されておらず、undefinedを返すのです。非同期関数が終了した後で変数を代入する方法はありませんか? –
@トルコジン:いいえ、どこに値を返す必要がありますか?つまり、コードは非同期で実行されます。そのため、値はパラメータとしてコールバック関数に渡され、コールバック関数を使用して必要なものを実行できるようになります。値を '返す 'ことができれば、' getCurrentPosition'がそれを行います。しかし、そうではないので、あなたはコールバックを提供しています。多分あなたはこの問題を理解するのに役立つ[この記事](http://felix-kling.de/blog/2011/01/14/how-to-return-data-from-an-ajax-call/)を見つけるでしょう(しかし私は書面ではそれほど良くはありません)) –