如何将Fetch API的值传递给变量?

时间:2016-10-18 22:50:13

标签: javascript ecmascript-6 es6-promise 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你可以找到一个带有代码

的JS Bin

1 个答案:

答案 0 :(得分:3)

您必须使用.then来处理承诺的结果:

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));