Как использовать результат от одной асинхронной функции к другой - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь использовать координаты широты и долготы на API-интерфейсе МКС (https://api.wheretheiss.at/v1/satellites/25544) в URL другого API-интерфейса (https://api.wheretheiss.at/v1/coordinates/37.795517,-122.393693). Я пытаюсь использовать координаты и ввести их в URL-адресе). вместо использования жестко закодированных.

Это то, что я сделал до сих пор ...

  • Я попытался использовать строку шаблона, чтобы сделатьдинамические координаты: https://api.wheretheiss.at/v1/coordinates/${latitude},${longitude}
  • Я сделал две отдельные функции асинхронного ожидания: (1) getISS () для получения координат широты / долготы и (2) getGeoLocation () для получения этих координат и получения кода страны /данные timecode_id
  • Я также пытался вызвать getGeoLocation () с широтой, долготой в качестве аргументов и передать их в широту и долготу для параметров, но это приводит только к ошибке 500

Примечание

  • Я знаю работу обоих URL API, потому что я проверил их и получил данные, которые я искал
  • Это веб-сайт API https://wheretheiss.at/w/developer

const api_url_id = 'https://api.wheretheiss.at/v1/satellites/25544'

//async await getISS function
async function getISS() {
    const response = await fetch(api_url_id)
    const data = await response.json()
    const {
        latitude,
        longitude,
        velocity,
        visibility
    } = data
}

async function getGeoLocation(latitude, longitude) {
    const response2 = await fetch(`https://api.wheretheiss.at/v1/coordinates/${latitude},${longitude}`)
    const data2 = await response2.json()
    const {
        timezone_id,
        country_code
    } = data2

    console.log(data2.timezone_id,country_code)
}

getGeoLocation(data.latitude, data.longitude)

getISS()

1 Ответ

1 голос
/ 26 октября 2019

асинхронные функции возвращают обещание , поэтому вы можете использовать .then ()

Вы должны вернуть данные из getISS и используйте .then () , вот так ...

// getISS function returns data
async function getISS() {
  const response = await fetch(api_url_id);
  const data = await response.json();
  return data;
}

Вызовите getISS функцию, используя затем позже позвоните getGeoLocation с необходимыми данными

getISS().then(({ latitude, longitude }) => {
  getGeoLocation(latitude, longitude);
});
...