2016-10-18 10 views
1

フォーク!Fetch APIの値を変数に渡すにはどうすればよいですか?

Google Maps APIを使用して、場所の緯度または経度を取得しようとしています。しかし、私はFetch APIとその約束を使って値を返す方法を知らない。

私はとの緯度と経度を記録することができます

let url = 'https://maps.googleapis.com/maps/api/geocode/json?address=london' 

fetch(url) 
    .then(response => response.json()) 
    .then(data => { 
    console.log(data.results[0].geometry.location.lat) 
    console.log(data.results[0].geometry.location.lng) 
    }) 

出力:

51.5073509 
0.1277583 

しかし、私は、関数でこのコードをカプセル化したい:

function getLatitudeOrLongitude(url, LatitudeOrLongitude) { 
    fetch(url) 
    .then(response => response.json()) 
    .then(data => { 
     if (LatitudeOrLongitude === 'latitude') 
     return data.results[0].geometry.location.lat 
     else 
     return data.results[0].geometry.location.lng 
    }) 
} 

let latitudeOfLondon = getLatitudeOrLongitude(url, 'latitude') 

console.log(latitudeOfLondon) 

出力:

undefined 

誰かが間違っていると指摘できますか?みなさんありがとう!

編集:Hereあなたはあなたが約束の結果処理するために.thenを使用しなければならないコード

+1

あなたは非同期メソッドから返すことはできませんが。 – adeneo

+0

ありがとう@adeneo!代わりに、私は同じ仕事を達成するために何をすることができますか? – vcamargo

+0

コールバック内でのみ結果を使うことができます。この場合、 'then'ハンドラ – adeneo

答えて

1

とJSのビンを見つけることができます。

function getLatitudeOrLongitude(url, LatitudeOrLongitude) { 
    return fetch(url) 
    .then(response => response.json()) 
    .then(data => { 
     if (LatitudeOrLongitude === 'latitude') 
     return data.results[0].geometry.location.lat 
     else 
     return data.results[0].geometry.location.lng 
    }) 
} 

getLatitudeOrLongitude(url, 'latitude') 
    .then((latitudeOfLondon) => console.log(latitudeOfLondon)); 
関連する問題