Javascript React获取相互依赖的多个API(异步/等待)

Javascript React获取相互依赖的多个API(异步/等待),javascript,html,css,reactjs,Javascript,Html,Css,Reactjs,我正在做一个项目,我遇到了这个错误 “response.json不是函数” 我可以在从第一个API调用获取数据后很长一段时间内获得lat。但在我将第二个API嵌套到第一个API中之后,问题就出现了 我不确定我在这里做错了什么。无论API是否相互依赖,解决这个问题的方法是什么?提前谢谢 const Form = () => { const [search, setSearch] = useState('') const [location, setLocation] = useS

我正在做一个项目,我遇到了这个错误

“response.json不是函数”

我可以在从第一个API调用获取数据后很长一段时间内获得lat。但在我将第二个API嵌套到第一个API中之后,问题就出现了

我不确定我在这里做错了什么。无论API是否相互依赖,解决这个问题的方法是什么?提前谢谢


const Form = () => {

  const [search, setSearch] = useState('')
  const [location, setLocation] = useState('')
  // const [isLoading, setIsLoading] = useState(false)

  useEffect(() => {
    geocode()

  }, [location])

  const geocode = async () => {
    if(location) {
      const response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${location}.json?limit=1&access_token=${ACCESS_TOKEN}`)
      const data = await response.json()
      const lat = data.features[0].center[1]
      const log = data.features[0].center[0]
      console.log(data.features[0].center[1], data.features[0].center[0])
      forecast(lat,log)
    }
  }

  const forecast = async (latitude, longitude) => {
    const response = await `https://api.darksky.net/forecast//${API_KEY}/${latitude},${longitude}`
    const data = await response.json()
    console.log(data)
  }

  const getSubmit = e => {
    e.preventDefault()
    setLocation(search)
    setSearch('')
  }

  return (
    <form onSubmit={getSubmit}>
      <input 
        type="text"
        name="location"
        value={search}
        onChange={e => setSearch(e.target.value)}
        placeholder="Enter Location..."/>
      <button type="submit">Get weather!</button>
    </form>
  )
}

常数形式=()=>{
const[search,setSearch]=useState(“”)
const[location,setLocation]=useState(“”)
//常量[isLoading,setIsLoading]=useState(false)
useffect(()=>{
地理编码()
},[地点])
常量geocode=async()=>{
如果(位置){
const response=等待获取(`https://api.mapbox.com/geocoding/v5/mapbox.places/${location}.json?limit=1&access\u token=${access\u token}`)
const data=wait response.json()
常量lat=data.features[0]。中心[1]
常量日志=数据。要素[0]。中心[0]
console.log(data.features[0].center[1],data.features[0].center[0])
预测(纬度、对数)
}
}
常量预测=异步(纬度、经度)=>{
常数响应=等待`https://api.darksky.net/forecast//${API_KEY}/${纬度},${经度}`
const data=wait response.json()
console.log(数据)
}
const getSubmit=e=>{
e、 预防默认值()
设置位置(搜索)
设置搜索(“”)
}
返回(
setSearch(e.target.value)}
占位符=“输入位置…”/>
看天气!
)
}

您实际上并没有发送请求

await `https://api.darksky.net/forecast//${API_KEY}/${latitude},${longitude}`
应该是

await fetch(`https://api.darksky.net/forecast//${API_KEY}/${latitude},${longitude}`)

和地理编码一样,使用
fetch()
,投票关闭,因为输入错误。捕捉得很好,我仍然会看到它occurs@codekaizer现在我犯了这个错误CORS策略已阻止从源“”获取“”的访问:请求的资源上不存在“访问控制允许源”标头。如果不透明的响应满足您的需要,请将请求的模式设置为“无cors”以获取禁用cors的资源。“这是另一个问题。您可能希望以拼写错误关闭此响应,然后打开另一个。愚蠢的我,我在将此代码发布到stackoverflow时犯了一个拼写错误。在修复它之后,它仍然不起作用。”。