Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .然后回调返回';未定义';,但是日志显示了正确的输出_Javascript_Reactjs - Fatal编程技术网

Javascript .然后回调返回';未定义';,但是日志显示了正确的输出

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

我正在尝试进行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 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();
    }