Javascript React获取相互依赖的多个API(异步/等待)
我正在做一个项目,我遇到了这个错误 “response.json不是函数” 我可以在从第一个API调用获取数据后很长一段时间内获得lat。但在我将第二个API嵌套到第一个API中之后,问题就出现了 我不确定我在这里做错了什么。无论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
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时犯了一个拼写错误。在修复它之后,它仍然不起作用。”。