Javascript 如何使用从一个异步函数到另一个异步函数的结果

Javascript 如何使用从一个异步函数到另一个异步函数的结果,javascript,function,async-await,geolocation,fetch,Javascript,Function,Async Await,Geolocation,Fetch,我试图在另一个api()的url中使用ISSAPI()上的纬度和经度坐标。我尝试使用坐标并将其输入url,而不是使用硬编码的坐标 这就是我到目前为止所做的… 我尝试使用模板字符串使坐标动态:https://api.wheretheiss.at/v1/coordinates/${纬度},${经度} 我创建了两个单独的异步等待函数:(1)getISS()获取纬度/经度坐标,(2)getGeoLocation()获取这些坐标并获取国家代码/时间代码id数据 我还尝试使用latitude、longit

我试图在另一个api()的url中使用ISSAPI()上的纬度和经度坐标。我尝试使用坐标并将其输入url,而不是使用硬编码的坐标

这就是我到目前为止所做的…

  • 我尝试使用模板字符串使坐标动态:
    https://api.wheretheiss.at/v1/coordinates/${纬度},${经度}
  • 我创建了两个单独的异步等待函数:(1)getISS()获取纬度/经度坐标,(2)getGeoLocation()获取这些坐标并获取国家代码/时间代码id数据
  • 我还尝试使用latitude、longitude作为参数调用getGeoLocation(),并将它们传递到参数的latitude和longitude中,但这只会导致500错误
注意

  • 我知道这两个url api的工作,因为我已经对它们进行了测试,并收到了我正在寻找的数据
  • 这是api网站
const-api\u-url\u-id=”https://api.wheretheiss.at/v1/satellites/25544'
//异步等待getISS函数
异步函数getISS(){
const response=等待获取(api\u url\u id)
const data=wait response.json()
常数{
纬度,
经度,
速度
可见度
}=数据
}
异步函数getGeoLocation(纬度、经度){
const response2=等待获取(`https://api.wheretheiss.at/v1/coordinates/${纬度},${经度}`)
const data2=await response2.json()
常数{
时区id,
国家代码
}=数据2
console.log(数据2.时区id、国家代码)
}
getGeoLocation(data.latitude、data.longitude)

getISS()
异步函数返回一个承诺,因此您可以使用.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函数,使用then稍后调用getGeoLocation和必要的数据

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

第二个请求在某些lat和long上出现500个内部服务器错误…我已经尝试过了,并且我能够使用getGeoLocation中的坐标。但是,我仍然收到一个错误:requests.js:18 GET 500(内部服务器错误)getGeoLocation@requests.js:18(匿名)@requests.js:32 Promise.then(异步)(匿名)@requests.js:28 requests.js:24 Uncaught(承诺)错误:无法在getGeoLocation(requests.js:24)获取ISS数据是的,我注意到了。如果您尝试使用其他坐标,则会起作用。因此,您的代码现在就可以了。也许服务给了你错误的坐标,或者getGeoLocation只给了500个特定的(受限的)坐标。我发现如果坐标在水体上,它会给出一个错误。太令人沮丧了,但我终于明白了!