首页 > 解决方案 > .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;

我没有收到任何错误消息。为什么会发生这种情况(对我而言)?;)

标签: javascriptreactjs

解决方案


const CurrencyLayer = {
  getAllCurrencies() {
    return fetch(`${baseURI}${apiKey}`)
    .then(res => res.json())
    .catch(err => {
      console.log(err)
    })
  },
}

那里。
错误是:

  1. 您没有返回fetch函数生成的承诺。
  2. 不需要特殊的块来返回res.json()。这个匿名函数已经隐式返回结果:res => res.json(),相当于:
res => {
    return res.json();
}

推荐阅读