javascript - .then-callback 返回“未定义”,但日志显示正确的输出
问题描述
我正在尝试进行 API 调用以获取 json 对象来填充下拉菜单。当方法 .getAllCurrencies() 被调用时,它返回“未定义”。如果我用简单的 console.log(jsonRes) 替换 jsonRes 的 return 语句,它会显示正确的数据。
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;
我没有收到任何错误消息。为什么会发生这种情况(对我而言)?;)
解决方案
const CurrencyLayer = {
getAllCurrencies() {
return fetch(`${baseURI}${apiKey}`)
.then(res => res.json())
.catch(err => {
console.log(err)
})
},
}
那里。
错误是:
- 您没有返回
fetch
函数生成的承诺。 - 不需要特殊的块来返回
res.json()
。这个匿名函数已经隐式返回结果:res => res.json()
,相当于:
res => {
return res.json();
}
推荐阅读
- loops - 在 JavaFX 中使用 for 循环设置时间轴
- linux - 是否可以仅在特定目录中提供命令?
- javascript - CKEditor - 可编辑内容 CSS 干扰编辑器工具栏样式
- neo4j - Neo4j 慢匹配和遍历,即使有索引
- tensorflow - 机器学习文本比较模型
- angular - 无法从 Angular5 模板中的 firebase 获取 $key
- reactjs - React - 部署后外部链接不起作用
- linux - 使用 GNU AS (GAS) .intel_syntax 将静态地址放入寄存器?
- if-statement - 运行 if 语句并将结果存储在向量中
- javascript - JavaScript 表单中的边框颜色不会覆盖