これを実行すると、変数elevationPoint
は最初のアラートでは未定義です。私はそれが第2の警告で働くことに事故で気づいた。何故ですか?グローバル変数は、2回使用しない限り、定義されていません。
var elevator = new google.maps.ElevationService();
var coordinates = new google.maps.LatLng(closestLat , closestLng);
var pointElevation;
elevator.getElevationForLocations({
'locations':[coordinates]
}, function (results, status) {
if (status == google.maps.ElevationStatus.OK) {
// Retrieve the first result
if (results[0]) {
pointElevation = results[0].elevation;
} else {
alert('No results found');
}
}
else {
alert('Elevation service failed due to: ' + status);
}
});
alert(pointElevation);
alert(pointElevation);
https://m.youtube.com/watch?v=8aGhZQkoFbQはどのように任意のコールバックの実行ができます。アラートがブロックされている間はアラートが実行されている間は実行できません。また、第1アラートと第2アラートの間で実行されることはありません。スクリプトブロック全体が実行されるまで、イベントは実行できません。 – Blindman67
@ Blindman67 Danielo515によると、APIは非同期呼び出しなので、ブロックされていません。コールバックを渡しても非同期コールは保証されませんが、ほとんどの非同期コールはコールバックメカニズムを使用します。 –
@DJ非同期関数が呼ばれていますか? https://tc39.github.io/ecma262/#sec-async-function-definitions私はコード実行を中断させ、実行中の状態を変更できるようにする方法は知らない。私はその可能性のために高低を検索しました。あなたがそれをやる方法をどこで知ることができるかを指摘できますか?さらなる調査については – Blindman67