Javascript .然后回调返回';未定义';,但是日志显示了正确的输出
我正在尝试进行API调用,以获取一个json对象来填充下拉菜单。调用.GetAllCurrences()方法时,它返回“undefined”。如果我用简单的console.log(jsonRes)替换jsonRes的return语句,它将显示正确的数据Javascript .然后回调返回';未定义';,但是日志显示了正确的输出,javascript,reactjs,Javascript,Reactjs,我正在尝试进行API调用,以获取一个json对象来填充下拉菜单。调用.GetAllCurrences()方法时,它返回“undefined”。如果我用简单的console.log(jsonRes)替换jsonRes的return语句,它将显示正确的数据 const apiKey = process.env.REACT_APP_API_KEY; const baseURI = 'http://apilayer.net/api/live?access_key='; const CurrencyLa
const apiKey = process.env.REACT_APP_API_KEY;
const baseURI = 'http://apilayer.net/api/live?access_key=';
const CurrencyLayer = {
getAllCurrencies() {
fetch(`${baseURI}${apiKey}`, )
.then(res => res.json())
.then(jsonRes => {
return jsonRes
})
.catch(err => {
console.log(err)
})
},
}
export default CurrencyLayer;
我没有收到任何错误消息。(我)为什么会这样
那里。错误是:
fetch
生成的承诺res.json()
。此匿名函数已隐式返回结果:res=>res.json()
,相当于:那么(jsonRes=>{return jsonRes})在做什么呢?您认为这是将值返回到任何被称为
getAllCurrencies
的对象吗?事实并非如此,您需要返回fetch
并调用,然后在调用getAllCurrencies
的任何范围内调用。您的问题似乎是对javascript异步行为的误解。有很多方法可以修复它,但你应该认真阅读。我刚刚发现,您可以在谷歌中查找异步javascript以了解更多信息。这与您的整个体系结构有关,我们无法仅使用这组代码为您提供最佳解决方案。GetAllCurrences
不会返回任何内容,因此它将是未定义的。GetAllCurrences()
有几个问题,但主要问题是您没有从GetAllCurrences()返回任何内容。尝试return fetch(…
您不需要第二个then()
。然后您需要使用getallcurrences()。然后(val=>//use val)
const CurrencyLayer = {
getAllCurrencies() {
return fetch(`${baseURI}${apiKey}`)
.then(res => res.json())
.catch(err => {
console.log(err)
})
},
}
res => {
return res.json();
}